avformat/mxfenc: move content package rates and timebase combinations to a separate struct

Signed-off-by: Marton Balint <cus@passwd.hu>
pull/336/head
Marton Balint 5 years ago
parent 27a8146990
commit f69154b2c4
  1. 32
      libavformat/mxf.c
  2. 5
      libavformat/mxf.h

@ -131,25 +131,25 @@ int ff_mxf_decode_pixel_layout(const char pixel_layout[16], enum AVPixelFormat *
return -1;
}
static const AVRational mxf_time_base[] = {
{ 1001, 24000 },
{ 1, 24},
{ 1001, 30000 },
{ 1001, 60000 },
{ 1, 25 },
{ 1, 50 },
{ 1, 60 },
{ 0, 0}
};
static const int mxf_content_package_rates[] = {
3, 2, 7, 13, 4, 10, 12,
/**
* See SMPTE 326M-2000 Section 7.2 Content package rate
* MXFContentPackageRate->rate is bits b5..b0.
*/
static const MXFContentPackageRate mxf_content_package_rates[] = {
{ 2, { 1, 24 } },
{ 3, { 1001, 24000 } },
{ 4, { 1, 25 } },
{ 7, { 1001, 30000 } },
{ 10, { 1, 50 } },
{ 12, { 1, 60 } },
{ 13, { 1001, 60000 } },
{0}
};
int ff_mxf_get_content_package_rate(AVRational time_base)
{
for (int i = 0; mxf_time_base[i].num; i++)
if (!av_cmp_q(time_base, mxf_time_base[i]))
return mxf_content_package_rates[i];
for (int i = 0; mxf_content_package_rates[i].rate; i++)
if (!av_cmp_q(time_base, mxf_content_package_rates[i].tb))
return mxf_content_package_rates[i].rate;
return 0;
}

@ -59,6 +59,11 @@ enum MXFFrameLayout {
SegmentedFrame,
};
typedef struct MXFContentPackageRate {
int rate;
AVRational tb;
} MXFContentPackageRate;
typedef struct KLVPacket {
UID key;
int64_t offset;

Loading…
Cancel
Save