avformat/mxfenc: Add color siting element
Previous version Reviewed-by: tim nicholson <nichot20@yahoo.com> Previous version Reviewed-by: Tomas Härdin <tomas.hardin@codemill.se> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
a45cf639e6
commit
3b176af001
@ -79,6 +79,7 @@ typedef struct MXFStreamContext {
|
|||||||
int interlaced; ///< whether picture is interlaced
|
int interlaced; ///< whether picture is interlaced
|
||||||
int field_dominance; ///< tff=1, bff=2
|
int field_dominance; ///< tff=1, bff=2
|
||||||
int component_depth;
|
int component_depth;
|
||||||
|
int color_siting;
|
||||||
int h_chroma_sub_sample;
|
int h_chroma_sub_sample;
|
||||||
int temporal_reordering;
|
int temporal_reordering;
|
||||||
AVRational aspect_ratio; ///< display aspect ratio
|
AVRational aspect_ratio; ///< display aspect ratio
|
||||||
@ -416,6 +417,7 @@ static const MXFLocalTagPair mxf_local_tag_batch[] = {
|
|||||||
// CDCI Picture Essence Descriptor
|
// CDCI Picture Essence Descriptor
|
||||||
{ 0x3301, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x01,0x05,0x03,0x0A,0x00,0x00,0x00}}, /* Component Depth */
|
{ 0x3301, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x01,0x05,0x03,0x0A,0x00,0x00,0x00}}, /* Component Depth */
|
||||||
{ 0x3302, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x05,0x01,0x05,0x00,0x00,0x00}}, /* Horizontal Subsampling */
|
{ 0x3302, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x05,0x01,0x05,0x00,0x00,0x00}}, /* Horizontal Subsampling */
|
||||||
|
{ 0x3303, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x01,0x05,0x01,0x06,0x00,0x00,0x00}}, /* Color Siting */
|
||||||
// Generic Sound Essence Descriptor
|
// Generic Sound Essence Descriptor
|
||||||
{ 0x3D02, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x04,0x04,0x02,0x03,0x01,0x04,0x00,0x00,0x00}}, /* Locked/Unlocked */
|
{ 0x3D02, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x04,0x04,0x02,0x03,0x01,0x04,0x00,0x00,0x00}}, /* Locked/Unlocked */
|
||||||
{ 0x3D03, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x05,0x04,0x02,0x03,0x01,0x01,0x01,0x00,0x00}}, /* Audio sampling rate */
|
{ 0x3D03, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x05,0x04,0x02,0x03,0x01,0x01,0x01,0x00,0x00}}, /* Audio sampling rate */
|
||||||
@ -993,7 +995,7 @@ static void mxf_write_cdci_common(AVFormatContext *s, AVStream *st, const UID ke
|
|||||||
int stored_height = (st->codec->height+15)/16*16;
|
int stored_height = (st->codec->height+15)/16*16;
|
||||||
int display_height;
|
int display_height;
|
||||||
int f1, f2;
|
int f1, f2;
|
||||||
unsigned desc_size = size+8+8+8+8+8+8+8+5+16+sc->interlaced*4+12+20;
|
unsigned desc_size = size+8+8+8+8+8+8+8+5+16+sc->interlaced*4+12+20+5;
|
||||||
if (sc->interlaced && sc->field_dominance)
|
if (sc->interlaced && sc->field_dominance)
|
||||||
desc_size += 5;
|
desc_size += 5;
|
||||||
|
|
||||||
@ -1030,6 +1032,10 @@ static void mxf_write_cdci_common(AVFormatContext *s, AVStream *st, const UID ke
|
|||||||
mxf_write_local_tag(pb, 4, 0x3302);
|
mxf_write_local_tag(pb, 4, 0x3302);
|
||||||
avio_wb32(pb, sc->h_chroma_sub_sample);
|
avio_wb32(pb, sc->h_chroma_sub_sample);
|
||||||
|
|
||||||
|
// color siting
|
||||||
|
mxf_write_local_tag(pb, 1, 0x3303);
|
||||||
|
avio_w8(pb, sc->color_siting);
|
||||||
|
|
||||||
// frame layout
|
// frame layout
|
||||||
mxf_write_local_tag(pb, 1, 0x320C);
|
mxf_write_local_tag(pb, 1, 0x320C);
|
||||||
avio_w8(pb, sc->interlaced);
|
avio_w8(pb, sc->interlaced);
|
||||||
@ -2037,11 +2043,18 @@ static int mxf_write_header(AVFormatContext *s)
|
|||||||
// Default component depth to 8
|
// Default component depth to 8
|
||||||
sc->component_depth = 8;
|
sc->component_depth = 8;
|
||||||
sc->h_chroma_sub_sample = 2;
|
sc->h_chroma_sub_sample = 2;
|
||||||
|
sc->color_siting = 0xFF;
|
||||||
|
|
||||||
if (pix_desc) {
|
if (pix_desc) {
|
||||||
sc->component_depth = pix_desc->comp[0].depth_minus1 + 1;
|
sc->component_depth = pix_desc->comp[0].depth_minus1 + 1;
|
||||||
sc->h_chroma_sub_sample = 1 << pix_desc->log2_chroma_w;
|
sc->h_chroma_sub_sample = 1 << pix_desc->log2_chroma_w;
|
||||||
}
|
}
|
||||||
|
switch (ff_choose_chroma_location(s, st)) {
|
||||||
|
case AVCHROMA_LOC_TOPLEFT: sc->color_siting = 0; break;
|
||||||
|
case AVCHROMA_LOC_LEFT: sc->color_siting = 6; break;
|
||||||
|
case AVCHROMA_LOC_TOP: sc->color_siting = 1; break;
|
||||||
|
case AVCHROMA_LOC_CENTER: sc->color_siting = 3; break;
|
||||||
|
}
|
||||||
|
|
||||||
mxf->timecode_base = (tbc.den + tbc.num/2) / tbc.num;
|
mxf->timecode_base = (tbc.den + tbc.num/2) / tbc.num;
|
||||||
spf = ff_mxf_get_samples_per_frame(s, tbc);
|
spf = ff_mxf_get_samples_per_frame(s, tbc);
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
613b160bf09927661d9455dd975ad780 *./tests/data/lavf/lavf.mxf
|
bda6be285b4f275b6d8a74e1c5c5aec9 *./tests/data/lavf/lavf.mxf
|
||||||
525369 ./tests/data/lavf/lavf.mxf
|
525881 ./tests/data/lavf/lavf.mxf
|
||||||
./tests/data/lavf/lavf.mxf CRC=0xdbfff6f1
|
./tests/data/lavf/lavf.mxf CRC=0xdbfff6f1
|
||||||
64471cfc480751f2ca7998c4edbc7a02 *./tests/data/lavf/lavf.mxf
|
a93989cd8e80e9edcce60a2f01eb068b *./tests/data/lavf/lavf.mxf
|
||||||
560697 ./tests/data/lavf/lavf.mxf
|
561209 ./tests/data/lavf/lavf.mxf
|
||||||
./tests/data/lavf/lavf.mxf CRC=0x11a6178e
|
./tests/data/lavf/lavf.mxf CRC=0x11a6178e
|
||||||
a546bd6d8fe1608690bf2fc326cab0c3 *./tests/data/lavf/lavf.mxf
|
c0b9255defc9f0494084e2b286f222b9 *./tests/data/lavf/lavf.mxf
|
||||||
525369 ./tests/data/lavf/lavf.mxf
|
525881 ./tests/data/lavf/lavf.mxf
|
||||||
./tests/data/lavf/lavf.mxf CRC=0xdbfff6f1
|
./tests/data/lavf/lavf.mxf CRC=0xdbfff6f1
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
22dca5c8d62fe7ad1c56416ae736d6c1 *./tests/data/lavf/lavf.mxf_d10
|
bb8f8e2661e1c81fe4e1ce7900b54200 *./tests/data/lavf/lavf.mxf_d10
|
||||||
5330989 ./tests/data/lavf/lavf.mxf_d10
|
5330989 ./tests/data/lavf/lavf.mxf_d10
|
||||||
./tests/data/lavf/lavf.mxf_d10 CRC=0x6c74d488
|
./tests/data/lavf/lavf.mxf_d10 CRC=0x6c74d488
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
5df0bb1083cbe0ef3a70e4a93e44d812 *./tests/data/lavf/lavf.mxf_opatom
|
2c1a3b94af9e7c606532b1b636902b3a *./tests/data/lavf/lavf.mxf_opatom
|
||||||
4717113 ./tests/data/lavf/lavf.mxf_opatom
|
4717113 ./tests/data/lavf/lavf.mxf_opatom
|
||||||
./tests/data/lavf/lavf.mxf_opatom CRC=0xbdd696b9
|
./tests/data/lavf/lavf.mxf_opatom CRC=0xbdd696b9
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
77bd25ba3213ffbdc4d4c9052914510f *./tests/data/lavf/lavf.mxf_opatom_audio
|
d571768dd4e32b56917fb76abdb40570 *./tests/data/lavf/lavf.mxf_opatom_audio
|
||||||
102457 ./tests/data/lavf/lavf.mxf_opatom_audio
|
102457 ./tests/data/lavf/lavf.mxf_opatom_audio
|
||||||
./tests/data/lavf/lavf.mxf_opatom_audio CRC=0xd155c6ff
|
./tests/data/lavf/lavf.mxf_opatom_audio CRC=0xd155c6ff
|
||||||
|
@ -1,48 +1,48 @@
|
|||||||
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
|
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
|
||||||
ret: 0 st:-1 flags:0 ts:-1.000000
|
ret: 0 st:-1 flags:0 ts:-1.000000
|
||||||
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
|
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
|
||||||
ret: 0 st:-1 flags:1 ts: 1.894167
|
ret: 0 st:-1 flags:1 ts: 1.894167
|
||||||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
|
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
|
||||||
ret: 0 st: 0 flags:0 ts: 0.800000
|
ret: 0 st: 0 flags:0 ts: 0.800000
|
||||||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
|
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
|
||||||
ret: 0 st: 0 flags:1 ts:-0.320000
|
ret: 0 st: 0 flags:1 ts:-0.320000
|
||||||
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
|
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
|
||||||
ret:-1 st: 1 flags:0 ts: 2.576667
|
ret:-1 st: 1 flags:0 ts: 2.576667
|
||||||
ret: 0 st: 1 flags:1 ts: 1.470833
|
ret: 0 st: 1 flags:1 ts: 1.470833
|
||||||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
|
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
|
||||||
ret: 0 st:-1 flags:0 ts: 0.365002
|
ret: 0 st:-1 flags:0 ts: 0.365002
|
||||||
ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211456 size: 24786
|
ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211968 size: 24786
|
||||||
ret: 0 st:-1 flags:1 ts:-0.740831
|
ret: 0 st:-1 flags:1 ts:-0.740831
|
||||||
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
|
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
|
||||||
ret:-1 st: 0 flags:0 ts: 2.160000
|
ret:-1 st: 0 flags:0 ts: 2.160000
|
||||||
ret: 0 st: 0 flags:1 ts: 1.040000
|
ret: 0 st: 0 flags:1 ts: 1.040000
|
||||||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
|
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
|
||||||
ret: 0 st: 1 flags:0 ts:-0.058333
|
ret: 0 st: 1 flags:0 ts:-0.058333
|
||||||
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
|
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
|
||||||
ret: 0 st: 1 flags:1 ts: 2.835833
|
ret: 0 st: 1 flags:1 ts: 2.835833
|
||||||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
|
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
|
||||||
ret:-1 st:-1 flags:0 ts: 1.730004
|
ret:-1 st:-1 flags:0 ts: 1.730004
|
||||||
ret: 0 st:-1 flags:1 ts: 0.624171
|
ret: 0 st:-1 flags:1 ts: 0.624171
|
||||||
ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211456 size: 24786
|
ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211968 size: 24786
|
||||||
ret: 0 st: 0 flags:0 ts:-0.480000
|
ret: 0 st: 0 flags:0 ts:-0.480000
|
||||||
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
|
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
|
||||||
ret: 0 st: 0 flags:1 ts: 2.400000
|
ret: 0 st: 0 flags:1 ts: 2.400000
|
||||||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
|
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
|
||||||
ret:-1 st: 1 flags:0 ts: 1.306667
|
ret:-1 st: 1 flags:0 ts: 1.306667
|
||||||
ret: 0 st: 1 flags:1 ts: 0.200833
|
ret: 0 st: 1 flags:1 ts: 0.200833
|
||||||
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
|
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
|
||||||
ret: 0 st:-1 flags:0 ts:-0.904994
|
ret: 0 st:-1 flags:0 ts:-0.904994
|
||||||
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
|
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
|
||||||
ret: 0 st:-1 flags:1 ts: 1.989173
|
ret: 0 st:-1 flags:1 ts: 1.989173
|
||||||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
|
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
|
||||||
ret: 0 st: 0 flags:0 ts: 0.880000
|
ret: 0 st: 0 flags:0 ts: 0.880000
|
||||||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
|
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
|
||||||
ret: 0 st: 0 flags:1 ts:-0.240000
|
ret: 0 st: 0 flags:1 ts:-0.240000
|
||||||
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
|
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
|
||||||
ret:-1 st: 1 flags:0 ts: 2.671667
|
ret:-1 st: 1 flags:0 ts: 2.671667
|
||||||
ret: 0 st: 1 flags:1 ts: 1.565833
|
ret: 0 st: 1 flags:1 ts: 1.565833
|
||||||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
|
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
|
||||||
ret: 0 st:-1 flags:0 ts: 0.460008
|
ret: 0 st:-1 flags:0 ts: 0.460008
|
||||||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
|
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
|
||||||
ret: 0 st:-1 flags:1 ts:-0.645825
|
ret: 0 st:-1 flags:1 ts:-0.645825
|
||||||
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
|
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
|
||||||
|
Loading…
x
Reference in New Issue
Block a user