summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@gnome.org>2008-12-16 15:11:20 +0100
committerBenjamin Otte <otte@gnome.org>2008-12-16 15:11:20 +0100
commit6438ee54032919a9c7789881604a0bb2739a688c (patch)
treee5135cf9e2d058193da447480d3ddd3cedf07001
parentcc2ec453cc59269870e41b65c3e89cf392f67a36 (diff)
Revert "add support for H264 video"
-rw-r--r--swfdec/swfdec_net_stream.c64
-rw-r--r--swfdec/swfdec_video_decoder.c7
-rw-r--r--swfdec/swfdec_video_decoder.h7
-rw-r--r--swfdec/swfdec_video_decoder_gst.c19
-rw-r--r--swfdec/swfdec_video_decoder_screen.c2
-rw-r--r--swfdec/swfdec_video_decoder_vp6_alpha.c6
-rw-r--r--swfdec/swfdec_video_video_provider.c2
7 files changed, 18 insertions, 89 deletions
diff --git a/swfdec/swfdec_net_stream.c b/swfdec/swfdec_net_stream.c
index 11d1ac5b..7472b560 100644
--- a/swfdec/swfdec_net_stream.c
+++ b/swfdec/swfdec_net_stream.c
@@ -103,62 +103,11 @@ swfdec_net_stream_decode_video (SwfdecVideoDecoder *decoder, SwfdecBuffer *buffe
decoder->width -= wsub;
decoder->height -= hsub;
}
- } else if (decoder->codec == SWFDEC_VIDEO_CODEC_H264) {
- SwfdecBits bits;
- guint type;
- SwfdecBuffer *data;
- swfdec_bits_init (&bits, buffer);
- type = swfdec_bits_get_u8 (&bits);
- /* composition_time_offset = */ swfdec_bits_get_bu24 (&bits);
- switch (type) {
- case 0:
- SWFDEC_ERROR ("new data stream?!");
- break;
- case 1:
- data = swfdec_bits_get_buffer (&bits, -1);
- if (data) {
- swfdec_video_decoder_decode (decoder, data);
- } else {
- SWFDEC_ERROR ("no data in H264 buffer?");
- }
- break;
- case 2:
- break;
- default:
- SWFDEC_ERROR ("H264 data type %u not supported", type);
- break;
- }
} else {
swfdec_video_decoder_decode (decoder, buffer);
}
}
-/* returns TRUE if the buffer was consumed */
-static gboolean
-swfdec_net_stream_new_video_decoder (SwfdecNetStream *stream, guint format, SwfdecBuffer *buffer)
-{
- if (format == SWFDEC_VIDEO_CODEC_H264) {
- SwfdecBits bits;
-
- swfdec_bits_init (&bits, buffer);
- if (swfdec_bits_get_u8 (&bits) == 0) {
- SwfdecBuffer *data;
- /* composition_time_offset = */ swfdec_bits_get_bu24 (&bits);
- data = swfdec_bits_get_buffer (&bits, -1);
- stream->decoder = swfdec_video_decoder_new (format, data);
- if (data)
- swfdec_buffer_unref (data);
- return TRUE;
- } else {
- stream->decoder = swfdec_video_decoder_new (format, NULL);
- return FALSE;
- }
- } else {
- stream->decoder = swfdec_video_decoder_new (format, NULL);
- return FALSE;
- }
-}
-
static void swfdec_net_stream_update_playing (SwfdecNetStream *stream);
static void
swfdec_net_stream_video_goto (SwfdecNetStream *stream, guint timestamp)
@@ -166,7 +115,7 @@ swfdec_net_stream_video_goto (SwfdecNetStream *stream, guint timestamp)
SwfdecBuffer *buffer;
guint format;
cairo_surface_t *old;
- gboolean process_events, skip;
+ gboolean process_events;
guint process_events_from;
SWFDEC_LOG ("goto %ums", timestamp);
@@ -200,14 +149,12 @@ swfdec_net_stream_video_goto (SwfdecNetStream *stream, guint timestamp)
stream->decoder = NULL;
}
- skip = FALSE;
if (stream->decoder == NULL) {
buffer = swfdec_flv_decoder_get_video (stream->flvdecoder,
stream->current_time, TRUE, &format, &stream->decoder_time,
&next);
- skip = !swfdec_net_stream_new_video_decoder (stream, format, buffer);
- }
- if (!skip) {
+ stream->decoder = swfdec_video_decoder_new (format);
+ } else {
swfdec_flv_decoder_get_video (stream->flvdecoder,
stream->decoder_time, FALSE, NULL, NULL, &next);
if (next != stream->current_time) {
@@ -238,10 +185,9 @@ swfdec_net_stream_video_goto (SwfdecNetStream *stream, guint timestamp)
for (;;) {
if (format != swfdec_video_decoder_get_codec (stream->decoder)) {
g_object_unref (stream->decoder);
- skip = swfdec_net_stream_new_video_decoder (stream, format, buffer);
+ stream->decoder = swfdec_video_decoder_new (format);
}
- if (!skip)
- swfdec_net_stream_decode_video (stream->decoder, buffer);
+ swfdec_net_stream_decode_video (stream->decoder, buffer);
if (stream->decoder_time >= stream->current_time)
break;
diff --git a/swfdec/swfdec_video_decoder.c b/swfdec/swfdec_video_decoder.c
index 43ddb985..c09a2930 100644
--- a/swfdec/swfdec_video_decoder.c
+++ b/swfdec/swfdec_video_decoder.c
@@ -65,7 +65,6 @@ swfdec_video_codec_get_format (guint codec)
case SWFDEC_VIDEO_CODEC_H263:
case SWFDEC_VIDEO_CODEC_VP6:
case SWFDEC_VIDEO_CODEC_VP6_ALPHA:
- case SWFDEC_VIDEO_CODEC_H264:
return SWFDEC_VIDEO_FORMAT_I420;
case SWFDEC_VIDEO_CODEC_UNDEFINED:
case SWFDEC_VIDEO_CODEC_SCREEN:
@@ -112,8 +111,6 @@ swfdec_video_decoder_prepare (guint codec, char **missing)
/**
* swfdec_video_decoder_new:
* @codec: codec id
- * @data: initialization data for the video codec or %NULL if none. Currently
- * only used for H264
*
* Creates a decoder suitable for decoding @format. If no decoder is available
* for the given for mat, %NULL is returned.
@@ -121,14 +118,14 @@ swfdec_video_decoder_prepare (guint codec, char **missing)
* Returns: a new decoder or %NULL
**/
SwfdecVideoDecoder *
-swfdec_video_decoder_new (guint codec, SwfdecBuffer *buffer)
+swfdec_video_decoder_new (guint codec)
{
SwfdecVideoDecoder *ret = NULL;
GSList *walk;
for (walk = video_codecs; walk; walk = walk->next) {
SwfdecVideoDecoderClass *klass = g_type_class_ref (GPOINTER_TO_SIZE (walk->data));
- ret = klass->create (codec, buffer);
+ ret = klass->create (codec);
g_type_class_unref (klass);
if (ret)
break;
diff --git a/swfdec/swfdec_video_decoder.h b/swfdec/swfdec_video_decoder.h
index 091c42c6..2b1b6636 100644
--- a/swfdec/swfdec_video_decoder.h
+++ b/swfdec/swfdec_video_decoder.h
@@ -32,7 +32,6 @@ G_BEGIN_DECLS
#define SWFDEC_VIDEO_CODEC_VP6 4
#define SWFDEC_VIDEO_CODEC_VP6_ALPHA 5
#define SWFDEC_VIDEO_CODEC_SCREEN2 6
-#define SWFDEC_VIDEO_CODEC_H264 7
typedef enum {
SWFDEC_VIDEO_FORMAT_RGBA,
@@ -74,8 +73,7 @@ struct _SwfdecVideoDecoderClass
/*< public >*/
gboolean (* prepare) (guint codec,
char ** missing);
- SwfdecVideoDecoder * (* create) (guint codec,
- SwfdecBuffer * data);
+ SwfdecVideoDecoder * (* create) (guint codec);
void (* decode) (SwfdecVideoDecoder * decoder,
SwfdecBuffer * buffer);
@@ -90,8 +88,7 @@ void swfdec_video_decoder_register (GType type);
gboolean swfdec_video_decoder_prepare (guint codec,
char ** missing);
-SwfdecVideoDecoder * swfdec_video_decoder_new (guint codec,
- SwfdecBuffer * buffer);
+SwfdecVideoDecoder * swfdec_video_decoder_new (guint codec);
void swfdec_video_decoder_decode (SwfdecVideoDecoder * decoder,
SwfdecBuffer * buffer);
diff --git a/swfdec/swfdec_video_decoder_gst.c b/swfdec/swfdec_video_decoder_gst.c
index 38f393d9..893fc450 100644
--- a/swfdec/swfdec_video_decoder_gst.c
+++ b/swfdec/swfdec_video_decoder_gst.c
@@ -29,7 +29,7 @@
#include "swfdec_debug.h"
static GstCaps *
-swfdec_video_decoder_get_caps (guint codec, SwfdecBuffer *buffer)
+swfdec_video_decoder_get_caps (guint codec)
{
GstCaps *caps;
@@ -40,17 +40,6 @@ swfdec_video_decoder_get_caps (guint codec, SwfdecBuffer *buffer)
case SWFDEC_VIDEO_CODEC_VP6:
caps = gst_caps_from_string ("video/x-vp6-flash");
break;
- case SWFDEC_VIDEO_CODEC_H264:
- caps = gst_caps_from_string ("video/x-h264");
- if (buffer) {
- GstBuffer *gstbuf;
-
- swfdec_buffer_ref (buffer);
- gstbuf = swfdec_gst_buffer_new (buffer);
- gst_caps_set_simple (caps, "codec_data", GST_TYPE_BUFFER, gstbuf, NULL);
- gst_buffer_unref (gstbuf);
- }
- break;
default:
return NULL;
}
@@ -86,7 +75,7 @@ swfdec_video_decoder_gst_prepare (guint codec, char **missing)
GstCaps *caps;
/* Check if we can handle the format at all. If not, no plugin will help us. */
- caps = swfdec_video_decoder_get_caps (codec, NULL);
+ caps = swfdec_video_decoder_get_caps (codec);
if (caps == NULL)
return FALSE;
@@ -105,12 +94,12 @@ swfdec_video_decoder_gst_prepare (guint codec, char **missing)
}
static SwfdecVideoDecoder *
-swfdec_video_decoder_gst_create (guint codec, SwfdecBuffer *buffer)
+swfdec_video_decoder_gst_create (guint codec)
{
SwfdecVideoDecoderGst *player;
GstCaps *srccaps, *sinkcaps;
- srccaps = swfdec_video_decoder_get_caps (codec, buffer);
+ srccaps = swfdec_video_decoder_get_caps (codec);
if (srccaps == NULL)
return NULL;
sinkcaps = swfdec_video_decoder_get_sink_caps (codec);
diff --git a/swfdec/swfdec_video_decoder_screen.c b/swfdec/swfdec_video_decoder_screen.c
index c4c8be3f..42504b5b 100644
--- a/swfdec/swfdec_video_decoder_screen.c
+++ b/swfdec/swfdec_video_decoder_screen.c
@@ -34,7 +34,7 @@ swfdec_video_decoder_screen_prepare (guint codec, char **missing)
}
static SwfdecVideoDecoder *
-swfdec_video_decoder_screen_create (guint codec, SwfdecBuffer *buffer)
+swfdec_video_decoder_screen_create (guint codec)
{
if (codec != SWFDEC_VIDEO_CODEC_SCREEN)
return NULL;
diff --git a/swfdec/swfdec_video_decoder_vp6_alpha.c b/swfdec/swfdec_video_decoder_vp6_alpha.c
index e7fba2c4..8e443fcb 100644
--- a/swfdec/swfdec_video_decoder_vp6_alpha.c
+++ b/swfdec/swfdec_video_decoder_vp6_alpha.c
@@ -38,7 +38,7 @@ swfdec_video_decoder_vp6_alpha_prepare (guint codec, char **missing)
}
static SwfdecVideoDecoder *
-swfdec_video_decoder_vp6_alpha_create (guint codec, SwfdecBuffer *buffer)
+swfdec_video_decoder_vp6_alpha_create (guint codec)
{
if (codec != SWFDEC_VIDEO_CODEC_VP6_ALPHA)
return NULL;
@@ -128,8 +128,8 @@ swfdec_video_decoder_vp6_alpha_class_init (SwfdecVideoDecoderVp6AlphaClass *klas
static void
swfdec_video_decoder_vp6_alpha_init (SwfdecVideoDecoderVp6Alpha *vp6)
{
- vp6->image = swfdec_video_decoder_new (SWFDEC_VIDEO_CODEC_VP6, NULL);
- vp6->mask = swfdec_video_decoder_new (SWFDEC_VIDEO_CODEC_VP6, NULL);
+ vp6->image = swfdec_video_decoder_new (SWFDEC_VIDEO_CODEC_VP6);
+ vp6->mask = swfdec_video_decoder_new (SWFDEC_VIDEO_CODEC_VP6);
if (swfdec_video_decoder_get_error (vp6->image) ||
swfdec_video_decoder_get_error (vp6->mask)) {
diff --git a/swfdec/swfdec_video_video_provider.c b/swfdec/swfdec_video_video_provider.c
index 7e05d66d..74d6bd35 100644
--- a/swfdec/swfdec_video_video_provider.c
+++ b/swfdec/swfdec_video_video_provider.c
@@ -99,7 +99,7 @@ swfdec_video_video_provider_get_image (SwfdecVideoProvider *prov,
if (provider->decoder != NULL) {
g_object_unref (provider->decoder);
}
- provider->decoder = swfdec_video_decoder_new (provider->video->format, NULL);
+ provider->decoder = swfdec_video_decoder_new (provider->video->format);
if (provider->decoder == NULL)
return NULL;
frame = &g_array_index (provider->video->images, SwfdecVideoFrame, 0);