diff options
author | Benjamin Otte <otte@gnome.org> | 2008-12-16 12:34:55 +0100 |
---|---|---|
committer | Benjamin Otte <otte@gnome.org> | 2008-12-16 12:34:55 +0100 |
commit | 578af79d93d605d973231cea4220d03df54ac2ce (patch) | |
tree | 41ed196393c45d510d3c6ea4f9974ef87cf0c22f | |
parent | 4e1659795d9a18a9b5a47a4626d89fbb1b2cf9c9 (diff) |
decode H264 using the new API
-rw-r--r-- | swfdec/swfdec_net_stream.c | 29 |
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); } |