57 uint16_t
shift, result;
59 sample = (sample < 0x800) ? sample : sample | 0xf000;
60 shift = (sample & 0xf00) >> 8;
62 if (shift < 0x2 || shift > 0xd) {
64 }
else if (shift < 0x8) {
69 result = ((sample + ((256 *
shift) + 1)) << shift) - 1;
80 for (c = 0; c < 10; c++) {
83 if (c&1) offs = (80 * 6 + 80 * 16 * 0 + 3 + c*12000);
84 else offs = (80 * 6 + 80 * 16 * 3 + 3 + c*12000);
87 if (c&1) offs = (80 * 6 + 80 * 16 * 1 + 3 + c*12000);
88 else offs = (80 * 6 + 80 * 16 * 4 + 3 + c*12000);
91 if (c&1) offs = (80 * 3 + 8 + c*12000);
92 else offs = (80 * 5 + 48 + 5 + c*12000);
95 offs = (80*1 + 3 + 3);
100 if (frame[offs] == t)
104 return frame[offs] == t ? &frame[offs] :
NULL;
122 int size, chan, i, j, d, of, smpls, freq,
quant, half_ch;
131 smpls = as_pack[1] & 0x3f;
132 freq = as_pack[4] >> 3 & 0x07;
133 quant = as_pack[4] & 0x07;
146 ipcm = (sys->
height == 720 && !(frame[1] & 0x0C)) ? 2 : 0;
148 if (ipcm + sys->
n_difchan > (quant == 1 ? 2 : 4)) {
154 for (chan = 0; chan < sys->
n_difchan; chan++) {
163 if (quant == 1 && i == half_ch) {
172 for (j = 0; j < 9; j++) {
173 for (d = 8; d < 80; d += 2) {
182 pcm[of * 2] = frame[d + 1];
183 pcm[of * 2 + 1] = frame[d];
185 if (pcm[of * 2 + 1] == 0x80 && pcm[of * 2] == 0x00)
188 lc = ((uint16_t)frame[d] << 4) |
189 ((uint16_t)frame[d + 2] >> 4);
190 rc = ((uint16_t)frame[d + 1] << 4) |
191 ((uint16_t)frame[d + 2] & 0x0f);
202 pcm[of * 2] = lc & 0xff;
203 pcm[of * 2 + 1] = lc >> 8;
208 pcm[of * 2] = rc & 0xff;
209 pcm[of * 2 + 1] = rc >> 8;
225 int freq, stype, smpls,
quant, i, ach;
228 if (!as_pack || !c->
sys) {
233 smpls = as_pack[1] & 0x3f;
234 freq = as_pack[4] >> 3 & 0x07;
235 stype = as_pack[3] & 0x1f;
236 quant = as_pack[4] & 0x07;
240 "Unrecognized audio sample rate index (%d)\n", freq);
251 ach = ((
int[4]) { 1, 0, 2, 4 })[stype];
252 if (ach == 1 && quant && freq == 2)
256 for (i = 0; i < ach; i++) {
298 apt = frame[4] & 0x07;
299 is16_9 = (vsc_pack && ((vsc_pack[2] & 0x07) == 0x02 ||
300 (!apt && (vsc_pack[2] & 0x07) == 0x07)));
356 for (i = 0; i < c->
ach; i++) {
376 buf_size < c->sys->frame_size) {
383 for (i = 0; i < c->
ach; i++) {
422 int64_t timestamp,
int flags)
433 if (size >= 0 && offset > max_offset)
451 c->audio_pkt[0].size =
c->audio_pkt[1].size = 0;
452 c->audio_pkt[2].size =
c->audio_pkt[3].size = 0;
470 int partial_frame_size = 3 * 80;
478 ret =
avio_read(s->
pb, partial_frame, partial_frame_size);
482 if (ret < partial_frame_size) {
501 unsigned state, marker_pos = 0;
509 while ((state & 0xffffff7f) != 0x1f07003f) {
514 if (state == 0x003f0700 || state == 0xff3f0700)
516 if (state == 0xff3f0701 &&
avio_tell(s->
pb) - marker_pos == 80) {
534 "Can't determine profile of DV input stream.\n");
540 c->dv_demux->sys->time_base);
570 int64_t timestamp,
int flags)
592 unsigned marker_pos = 0;
596 int secondary_matches = 0;
601 for (i = 0; i < p->
buf_size-4; i++) {
603 if ((state & 0x0007f840) == 0x00070000) {
606 if ((state & 0xff07ff7f) == 0x1f07003f) {
608 if ((state & 0xffffff7f) == 0x1f07003f) {
614 if (state == 0x003f0700 || state == 0xff3f0700)
616 if (state == 0xff3f0701 && i - marker_pos == 80)
621 if (matches && p->
buf_size / matches < 1024 * 1024) {
622 if (matches > 4 || firstmatch ||
623 (secondary_matches >= 10 &&
624 p->
buf_size / secondary_matches < 24000))
641 .extensions =
"dv,dif",