MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / dv_format_frame

Function dv_format_frame

libavcodec/dv.c:1195–1242  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1193
1194#if CONFIG_DVVIDEO_ENCODER
1195static void dv_format_frame(DVVideoContext* c, uint8_t* buf)
1196{
1197 int chan, i, j, k;
1198
1199 for (chan = 0; chan < c->sys->n_difchan; chan++) {
1200 for (i = 0; i < c->sys->difseg_size; i++) {
1201 memset(buf, 0xff, 80 * 6); /* first 6 DIF blocks are for control data */
1202
1203 /* DV header: 1DIF */
1204 buf += dv_write_dif_id(dv_sect_header, chan, i, 0, buf);
1205 buf += dv_write_pack((c->sys->dsf ? dv_header625 : dv_header525), c, buf);
1206 buf += 72; /* unused bytes */
1207
1208 /* DV subcode: 2DIFs */
1209 for (j = 0; j < 2; j++) {
1210 buf += dv_write_dif_id(dv_sect_subcode, chan, i, j, buf);
1211 for (k = 0; k < 6; k++)
1212 buf += dv_write_ssyb_id(k, (i < c->sys->difseg_size/2), buf) + 5;
1213 buf += 29; /* unused bytes */
1214 }
1215
1216 /* DV VAUX: 3DIFS */
1217 for (j = 0; j < 3; j++) {
1218 buf += dv_write_dif_id(dv_sect_vaux, chan, i, j, buf);
1219 buf += dv_write_pack(dv_video_source, c, buf);
1220 buf += dv_write_pack(dv_video_control, c, buf);
1221 buf += 7*5;
1222 buf += dv_write_pack(dv_video_source, c, buf);
1223 buf += dv_write_pack(dv_video_control, c, buf);
1224 buf += 4*5 + 2; /* unused bytes */
1225 }
1226
1227 /* DV Audio/Video: 135 Video DIFs + 9 Audio DIFs */
1228 for (j = 0; j < 135; j++) {
1229 if (j%15 == 0) {
1230 memset(buf, 0xff, 80);
1231 buf += dv_write_dif_id(dv_sect_audio, chan, i, j/15, buf);
1232 buf += 77; /* audio control & shuffled PCM audio */
1233 }
1234 buf += dv_write_dif_id(dv_sect_video, chan, i, j, buf);
1235 buf += 77; /* 1 video macroblock: 1 bytes control
1236 4 * 14 bytes Y 8x8 data
1237 10 bytes Cr 8x8 data
1238 10 bytes Cb 8x8 data */
1239 }
1240 }
1241 }
1242}
1243
1244
1245static int dvvideo_encode_frame(AVCodecContext *c, uint8_t *buf, int buf_size,

Callers 1

dvvideo_encode_frameFunction · 0.85

Calls 3

dv_write_dif_idFunction · 0.85
dv_write_ssyb_idFunction · 0.85
dv_write_packFunction · 0.70

Tested by

no test coverage detected