[FFmpeg-devel] [PATCH] avformat/mxfdec: Detect jpeg2000 through codec_ul too

Paul B Mahol onemda at gmail.com
Fri Jun 12 19:17:46 CEST 2015


On 6/12/15, Michael Niedermayer <michaelni at gmx.at> wrote:
> Fixes Ticket2345
>
> Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> ---
>  libavformat/mxfdec.c |   14 ++++++++++++++
>  1 file changed, 14 insertions(+)
>
> diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
> index 78e2393..7389555 100644
> --- a/libavformat/mxfdec.c
> +++ b/libavformat/mxfdec.c
> @@ -166,6 +166,7 @@ typedef struct MXFDescriptor {
>      enum MXFMetadataSetType type;
>      UID essence_container_ul;
>      UID essence_codec_ul;
> +    UID codec_ul;
>      AVRational sample_rate;
>      AVRational aspect_ratio;
>      int width;
> @@ -974,6 +975,9 @@ static int mxf_read_generic_descriptor(void *arg,
> AVIOContext *pb, int tag, int
>      case 0x3004:
>          avio_read(pb, descriptor->essence_container_ul, 16);
>          break;
> +    case 0x3005:
> +        avio_read(pb, descriptor->codec_ul, 16);
> +        break;
>      case 0x3006:
>          descriptor->linked_track_id = avio_rb32(pb);
>          break;
> @@ -1151,6 +1155,11 @@ static const MXFCodecUL
> mxf_data_essence_container_uls[] = {
>      { {
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
> },  0, AV_CODEC_ID_NONE },
>  };
>
> +static const MXFCodecUL mxf_codec_uls[] = {
> +    { {
> 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x09,0x04,0x01,0x02,0x02,0x03,0x01,0x01,0x00
> }, 14,   AV_CODEC_ID_JPEG2000 },
> +    { {
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
> },  0,      AV_CODEC_ID_NONE },
> +};
> +
>  static const char* const mxf_data_essence_descriptor[] = {
>      "vbi_vanc_smpte_436M",
>  };
> @@ -1950,6 +1959,11 @@ static int mxf_parse_structural_metadata(MXFContext
> *mxf)
>          /* TODO: drop PictureEssenceCoding and SoundEssenceCompression,
> only check EssenceContainer */
>          codec_ul = mxf_get_codec_ul(ff_mxf_codec_uls,
> &descriptor->essence_codec_ul);
>          st->codec->codec_id = (enum AVCodecID)codec_ul->id;
> +        if (st->codec->codec_id == AV_CODEC_ID_NONE) {
> +            codec_ul = mxf_get_codec_ul(mxf_codec_uls,
> &descriptor->codec_ul);
> +            st->codec->codec_id = (enum AVCodecID)codec_ul->id;
> +        }
> +
>          av_log(mxf->fc, AV_LOG_VERBOSE, "%s: Universal Label: ",
>                 avcodec_get_name(st->codec->codec_id));
>          for (k = 0; k < 16; k++) {
> --
> 1.7.9.5
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>

lgtm


More information about the ffmpeg-devel mailing list