summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@gnome.org>2008-12-16 12:34:55 +0100
committerBenjamin Otte <otte@gnome.org>2008-12-16 12:34:55 +0100
commit578af79d93d605d973231cea4220d03df54ac2ce (patch)
tree41ed196393c45d510d3c6ea4f9974ef87cf0c22f
parent4e1659795d9a18a9b5a47a4626d89fbb1b2cf9c9 (diff)
decode H264 using the new API
-rw-r--r--swfdec/swfdec_net_stream.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/swfdec/swfdec_net_stream.c b/swfdec/swfdec_net_stream.c
index 601576d8..93163368 100644
--- a/swfdec/swfdec_net_stream.c
+++ b/swfdec/swfdec_net_stream.c
@@ -100,6 +100,35 @@ 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:
+ data = swfdec_bits_get_buffer (&bits, -1);
+ if (data) {
+ swfdec_video_decoder_set_codec_data (decoder, data);
+ swfdec_buffer_unref (data);
+ }
+ 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);
}