[FFmpeg-devel] [PATCH 2/7] lavf/mov: Support HEVC demuxing.

Timothy Gu timothygu99 at gmail.com
Sat Oct 12 22:51:44 CEST 2013


On Oct 12, 2013 9:45 AM, "Michael Niedermayer" <michaelni at gmx.at> wrote:
>
> From: Yusuke Nakamura <muken.the.vfrmaniac at gmail.com>
>
> Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> ---
>  libavformat/isom.c |    3 +++
>  libavformat/mov.c  |   10 +++++++---
>  2 files changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/libavformat/isom.c b/libavformat/isom.c
> index ec37228..dbfe4a2 100644
> --- a/libavformat/isom.c
> +++ b/libavformat/isom.c
> @@ -151,6 +151,9 @@ const AVCodecTag ff_codec_movvideo_tags[] = {
>
>      { AV_CODEC_ID_RAWVIDEO, MKTAG('W', 'R', 'A', 'W') },
>
> +    { AV_CODEC_ID_HEVC, MKTAG('h', 'v', 'c', '1') }, /* HEVC/H.265 which
indicates parameter sets shall not be in ES */
> +    { AV_CODEC_ID_HEVC, MKTAG('h', 'e', 'v', '1') }, /* HEVC/H.265 which
indicates parameter sets may be in ES */
> +
>      { AV_CODEC_ID_H264, MKTAG('a', 'v', 'c', '1') }, /* AVC-1/H.264 */
>      { AV_CODEC_ID_H264, MKTAG('a', 'i', '5', 'p') }, /* AVC-Intra  50M
720p24/30/60 */
>      { AV_CODEC_ID_H264, MKTAG('a', 'i', '5', 'q') }, /* AVC-Intra  50M
720p25/50 */
> diff --git a/libavformat/mov.c b/libavformat/mov.c
> index f222cf8..53638cc 100644
> --- a/libavformat/mov.c
> +++ b/libavformat/mov.c
> @@ -1604,8 +1604,11 @@ static int mov_skip_multiple_stsd(MOVContext *c,
AVIOContext *pb,
>          avio_skip(pb, size);
>          return 1;
>      }
> -    if (codec_tag == AV_RL32("avc1"))
> -        av_log(c->fc, AV_LOG_WARNING, "Concatenated H.264 might not play
corrently.\n");
> +    if ( codec_tag == AV_RL32("avc1") ||
> +         codec_tag == AV_RL32("hvc1") ||
> +         codec_tag == AV_RL32("hev1")
> +    )
> +        av_log(c->fc, AV_LOG_WARNING, "Concatenated H.264 or H.265 might
not play corrently.\n");

correctly typo. (I know it's in the original code, but just fix it for
convenience.)

>
>      return 0;
>  }
> @@ -1670,7 +1673,7 @@ int ff_mov_read_stsd_entries(MOVContext *c,
AVIOContext *pb, int entries)
>              if (ret < 0)
>                  return ret;
>          }
> -        /* this will read extra atoms at the end (wave, alac, damr,
avcC, SMI ...) */
> +        /* this will read extra atoms at the end (wave, alac, damr,
avcC, hvcC, SMI ...) */
>          a.size = size - (avio_tell(pb) - start_pos);
>          if (a.size > 8) {
>              if ((ret = mov_read_default(c, pb, a)) < 0)
> @@ -2976,6 +2979,7 @@ static const MOVParseTableEntry
mov_default_parse_table[] = {
>  { MKTAG('c','h','a','n'), mov_read_chan }, /* channel layout */
>  { MKTAG('d','v','c','1'), mov_read_dvc1 },
>  { MKTAG('s','b','g','p'), mov_read_sbgp },
> +{ MKTAG('h','v','c','C'), mov_read_glbl },
>  { MKTAG('u','u','i','d'), mov_read_uuid },
>  { MKTAG('C','i','n', 0x8e), mov_read_targa_y216 },
>  { 0, NULL }
> --
> 1.7.9.5
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


More information about the ffmpeg-devel mailing list