| 1193 | |
| 1194 | #if CONFIG_DVVIDEO_ENCODER |
| 1195 | static 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 | |
| 1245 | static int dvvideo_encode_frame(AVCodecContext *c, uint8_t *buf, int buf_size, |
no test coverage detected