diff options
author | Alex Converse <alex.converse@gmail.com> | 2012-02-09 17:49:57 -0800 |
---|---|---|
committer | Alex Converse <alex.converse@gmail.com> | 2012-02-09 19:16:15 -0800 |
commit | 89c9a8d3fdaef610f276e28f02cc46c581d05ef0 (patch) | |
tree | bbe72abae251322a3682d9d2874ef8b1fae77609 /libavcodec/dv.c | |
parent | 37460727124df4110bc6ed392f996f0ca352f6d6 (diff) | |
download | ffmpeg-89c9a8d3fdaef610f276e28f02cc46c581d05ef0.tar.gz |
dv: Move functions used only by the encoder out of a shared header.
Diffstat (limited to 'libavcodec/dv.c')
-rw-r--r-- | libavcodec/dv.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/libavcodec/dv.c b/libavcodec/dv.c index def0bef8c0..db231fb2bb 100644 --- a/libavcodec/dv.c +++ b/libavcodec/dv.c @@ -1190,6 +1190,41 @@ static inline int dv_write_pack(enum dv_pack_type pack_id, DVVideoContext *c, } #if CONFIG_DVVIDEO_ENCODER +static inline int dv_write_dif_id(enum dv_section_type t, uint8_t chan_num, + uint8_t seq_num, uint8_t dif_num, + uint8_t* buf) +{ + buf[0] = (uint8_t)t; /* Section type */ + buf[1] = (seq_num << 4) | /* DIF seq number 0-9 for 525/60; 0-11 for 625/50 */ + (chan_num << 3) | /* FSC: for 50Mb/s 0 - first channel; 1 - second */ + 7; /* reserved -- always 1 */ + buf[2] = dif_num; /* DIF block number Video: 0-134, Audio: 0-8 */ + return 3; +} + + +static inline int dv_write_ssyb_id(uint8_t syb_num, uint8_t fr, uint8_t* buf) +{ + if (syb_num == 0 || syb_num == 6) { + buf[0] = (fr << 7) | /* FR ID 1 - first half of each channel; 0 - second */ + (0 << 4) | /* AP3 (Subcode application ID) */ + 0x0f; /* reserved -- always 1 */ + } + else if (syb_num == 11) { + buf[0] = (fr << 7) | /* FR ID 1 - first half of each channel; 0 - second */ + 0x7f; /* reserved -- always 1 */ + } + else { + buf[0] = (fr << 7) | /* FR ID 1 - first half of each channel; 0 - second */ + (0 << 4) | /* APT (Track application ID) */ + 0x0f; /* reserved -- always 1 */ + } + buf[1] = 0xf0 | /* reserved -- always 1 */ + (syb_num & 0x0f); /* SSYB number 0 - 11 */ + buf[2] = 0xff; /* reserved -- always 1 */ + return 3; +} + static void dv_format_frame(DVVideoContext* c, uint8_t* buf) { int chan, i, j, k; |