[FFmpeg-devel] refine the flv tagtype read for check as spec

Steven Liu lingjiujianke at gmail.com
Thu Sep 4 03:46:48 CEST 2014


from the flv spec, the flvtag define the tagtype as one byte,
the spec desc is:
Reserved  UB[2] Reserved for FMS, should be 0
Filter    UB[1] Indicates if packets are filtered.
                0 = No pre-processing required.
                1 = Pre-processing (such as decryption) of the packet is
                    required before it can be rendered.
                    Shall be 0 in unencrypted files, and 1 for encrypted
tags.
                    See Annex F. FLV Encryption for the use of filters.
TagType   UB[5] Type of contents in this tag. The following types are
                defined:
                        8 = audio
                        9 = video
                        18 = script data

Signed-off-by: Steven Liu <qi.liu at chinacache.com>
---
 libavformat/flvdec.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index 8d9ed8b..a0550b4 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -777,7 +777,7 @@ static int flv_read_packet(AVFormatContext *s, AVPacket
*pkt)
     /* pkt size is repeated at end. skip it */
     for (;; avio_skip(s->pb, 4)) {
         pos  = avio_tell(s->pb);
-        type = avio_r8(s->pb);
+        type = (avio_r8(s->pb) & 0x1F);
         size = avio_rb24(s->pb);
         dts  = avio_rb24(s->pb);
         dts |= avio_r8(s->pb) << 24;
@@ -940,7 +940,7 @@ retry_duration:
     if (st->codec->codec_id == AV_CODEC_ID_AAC ||
         st->codec->codec_id == AV_CODEC_ID_H264 ||
         st->codec->codec_id == AV_CODEC_ID_MPEG4) {
-        int type = avio_r8(s->pb);
+        type = avio_r8(s->pb);
         size--;
         if (st->codec->codec_id == AV_CODEC_ID_H264 || st->codec->codec_id
== AV_CODEC_ID_MPEG4) {
             // sign extension
--
1.7.1


More information about the ffmpeg-devel mailing list