diff mbox series

[FFmpeg-devel,v20,08/10] avformat/mov_demuxer: Extended MOV demuxer to handle EVC video content

Message ID 20230418103257.374-1-d.kozinski@samsung.com
State New
Headers show
Series [FFmpeg-devel,v20,01/10] avcodec/evc: MPEG-5 EVC codec registration | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Dawid Kozinski April 18, 2023, 10:32 a.m. UTC
- Added evc extension to the list of extensions for ff_mov_demuxer

Signed-off-by: Dawid Kozinski <d.kozinski@samsung.com>
---
 libavformat/demux.c | 1 +
 libavformat/mov.c   | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

Comments

James Almer April 19, 2023, 12:59 p.m. UTC | #1
On 4/18/2023 7:32 AM, Dawid Kozinski wrote:
> - Added evc extension to the list of extensions for ff_mov_demuxer
> 
> Signed-off-by: Dawid Kozinski <d.kozinski@samsung.com>
> ---
>   libavformat/demux.c | 1 +
>   libavformat/mov.c   | 3 ++-
>   2 files changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/libavformat/demux.c b/libavformat/demux.c
> index 06de71cd6e..912413c6a8 100644
> --- a/libavformat/demux.c
> +++ b/libavformat/demux.c
> @@ -120,6 +120,7 @@ static int set_codec_from_probe_data(AVFormatContext *s, AVStream *st,
>           { "mp3",        AV_CODEC_ID_MP3,          AVMEDIA_TYPE_AUDIO    },
>           { "mpegvideo",  AV_CODEC_ID_MPEG2VIDEO,   AVMEDIA_TYPE_VIDEO    },
>           { "truehd",     AV_CODEC_ID_TRUEHD,       AVMEDIA_TYPE_AUDIO    },
> +        { "evc",        AV_CODEC_ID_EVC,          AVMEDIA_TYPE_VIDEO    },
>           { 0 }
>       };
>       int score;
> diff --git a/libavformat/mov.c b/libavformat/mov.c
> index 057fd872b1..3d5c432697 100644
> --- a/libavformat/mov.c
> +++ b/libavformat/mov.c
> @@ -2647,6 +2647,7 @@ static int mov_finalize_stsd_codec(MOVContext *c, AVIOContext *pb,
>       case AV_CODEC_ID_VP9:
>           sti->need_parsing = AVSTREAM_PARSE_FULL;
>           break;
> +    case AV_CODEC_ID_EVC:

You should also parse the evcC atom to get the extradata, same as h26*, 
mapping it to the generic mov_read_glbl() function in 
mov_default_parse_table[].

>       case AV_CODEC_ID_AV1:
>           /* field_order detection of H264 requires parsing */
>       case AV_CODEC_ID_H264:
> @@ -9305,7 +9306,7 @@ const AVInputFormat ff_mov_demuxer = {
>       .long_name      = NULL_IF_CONFIG_SMALL("QuickTime / MOV"),
>       .priv_class     = &mov_class,
>       .priv_data_size = sizeof(MOVContext),
> -    .extensions     = "mov,mp4,m4a,3gp,3g2,mj2,psp,m4b,ism,ismv,isma,f4v,avif",
> +    .extensions     = "mov,mp4,m4a,3gp,3g2,mj2,psp,m4b,ism,ismv,isma,f4v,avif,evc",

Isn't this the raw format extension? Why add it to the mp4 demuxer?

>       .flags_internal = FF_FMT_INIT_CLEANUP,
>       .read_probe     = mov_probe,
>       .read_header    = mov_read_header,
diff mbox series

Patch

diff --git a/libavformat/demux.c b/libavformat/demux.c
index 06de71cd6e..912413c6a8 100644
--- a/libavformat/demux.c
+++ b/libavformat/demux.c
@@ -120,6 +120,7 @@  static int set_codec_from_probe_data(AVFormatContext *s, AVStream *st,
         { "mp3",        AV_CODEC_ID_MP3,          AVMEDIA_TYPE_AUDIO    },
         { "mpegvideo",  AV_CODEC_ID_MPEG2VIDEO,   AVMEDIA_TYPE_VIDEO    },
         { "truehd",     AV_CODEC_ID_TRUEHD,       AVMEDIA_TYPE_AUDIO    },
+        { "evc",        AV_CODEC_ID_EVC,          AVMEDIA_TYPE_VIDEO    },
         { 0 }
     };
     int score;
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 057fd872b1..3d5c432697 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -2647,6 +2647,7 @@  static int mov_finalize_stsd_codec(MOVContext *c, AVIOContext *pb,
     case AV_CODEC_ID_VP9:
         sti->need_parsing = AVSTREAM_PARSE_FULL;
         break;
+    case AV_CODEC_ID_EVC:
     case AV_CODEC_ID_AV1:
         /* field_order detection of H264 requires parsing */
     case AV_CODEC_ID_H264:
@@ -9305,7 +9306,7 @@  const AVInputFormat ff_mov_demuxer = {
     .long_name      = NULL_IF_CONFIG_SMALL("QuickTime / MOV"),
     .priv_class     = &mov_class,
     .priv_data_size = sizeof(MOVContext),
-    .extensions     = "mov,mp4,m4a,3gp,3g2,mj2,psp,m4b,ism,ismv,isma,f4v,avif",
+    .extensions     = "mov,mp4,m4a,3gp,3g2,mj2,psp,m4b,ism,ismv,isma,f4v,avif,evc",
     .flags_internal = FF_FMT_INIT_CLEANUP,
     .read_probe     = mov_probe,
     .read_header    = mov_read_header,