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

tim nicholson nichot20 at yahoo.com
Mon Jun 15 10:57:17 CEST 2015


On 12/06/15 18:05, Michael Niedermayer 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 },
_________________________________________/

mxf.c already has:-

{ { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x07,0x04,0x01,0x02,0x02,0x03,0x01,0x01,0x00 }, 14,   AV_CODEC_ID_JPEG2000 }, /* JPEG2000 Codestream */
________________________________________/

and my copy of RP224v12 agrees with that registry version byte. Since the
version byte is ignored this should make no functional difference, but it is
inconsistent with what we already have, and the published spec.


> +    { { 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++) {
>
-- 
Tim.
Key Fingerprint 38CF DB09 3ED0 F607 8B67 6CED 0C0B FC44 8B0B FC83



More information about the ffmpeg-devel mailing list