[FFmpeg-devel] [PATCH] avformat/m4vdec: use avpriv_find_start_code in mpeg4video_probe()

Michael Niedermayer michaelni at gmx.at
Mon Mar 16 17:03:15 CET 2015


On Sun, Mar 15, 2015 at 04:58:52PM +0800, zhaoxiu.zeng wrote:
> From 7d57cb0e822ac755ba7e3d9c09d90bf62c7da24d Mon Sep 17 00:00:00 2001
> From: Zeng Zhaoxiu <zhaoxiu.zeng at gmail.com>
> Date: Sun, 15 Mar 2015 11:59:27 +0800
> Subject: [PATCH 4/7] avformat/m4vdec: use avpriv_find_start_code in
>  mpeg4video_probe()
> 
> Signed-off-by: Zeng Zhaoxiu <zhaoxiu.zeng at gmail.com>
> ---
>  libavformat/m4vdec.c | 17 ++++++++---------
>  1 file changed, 8 insertions(+), 9 deletions(-)
> 
> diff --git a/libavformat/m4vdec.c b/libavformat/m4vdec.c
> index d8ee530..aa0ee36 100644
> --- a/libavformat/m4vdec.c
> +++ b/libavformat/m4vdec.c
> @@ -21,6 +21,7 @@
>  
>  #include "avformat.h"
>  #include "rawdec.h"
> +#include "libavcodec/internal.h"
>  
>  #define VISUAL_OBJECT_START_CODE       0x000001b5
>  #define VOP_START_CODE                 0x000001b6
> @@ -29,22 +30,20 @@ static int mpeg4video_probe(AVProbeData *probe_packet)
>  {
>      uint32_t temp_buffer = -1;
>      int VO = 0, VOL = 0, VOP = 0, VISO = 0, res = 0;
> -    int i;
> +    const uint8_t *ptr = probe_packet->buf, *end = ptr + probe_packet->buf_size;
>  
> -    for (i = 0; i < probe_packet->buf_size; i++) {
> -        temp_buffer = (temp_buffer << 8) + probe_packet->buf[i];
> -        if (temp_buffer & 0xfffffe00)
> -            continue;
> -        if (temp_buffer < 2)
> -            continue;
> +    while (ptr < end) {
> +        ptr = avpriv_find_start_code(ptr, end, &temp_buffer);
> +        if ((temp_buffer & 0xffffff00) != 0x100)
> +            break;
>  
>          if (temp_buffer == VOP_START_CODE)
>              VOP++;
>          else if (temp_buffer == VISUAL_OBJECT_START_CODE)
>              VISO++;
> -        else if (temp_buffer >= 0x100 && temp_buffer < 0x120)
> +        else if (temp_buffer < 0x120)
>              VO++;
> -        else if (temp_buffer >= 0x120 && temp_buffer < 0x130)
> +        else if (temp_buffer < 0x130)
>              VOL++;
>          else if (!(0x1AF < temp_buffer && temp_buffer < 0x1B7) &&
>                   !(0x1B9 < temp_buffer && temp_buffer < 0x1C4))

this is not doing the same, the old code considers 000000XX the new
does only consider 000001XX

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The greatest way to live with honor in this world is to be what we pretend
to be. -- Socrates
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150316/1787ae11/attachment.asc>


More information about the ffmpeg-devel mailing list