Mercurial > libavcodec.hg
comparison wmaprodec.c @ 10129:0ffe220e1c80 libavcodec
reindent
author | faust3 |
---|---|
date | Sat, 05 Sep 2009 10:18:23 +0000 |
parents | da4c9cfcba71 |
children | c2d08aedeeed |
comparison
equal
deleted
inserted
replaced
10128:da4c9cfcba71 | 10129:0ffe220e1c80 |
---|---|
1447 */ | 1447 */ |
1448 static int decode_packet(AVCodecContext *avctx, | 1448 static int decode_packet(AVCodecContext *avctx, |
1449 void *data, int *data_size, AVPacket* avpkt) | 1449 void *data, int *data_size, AVPacket* avpkt) |
1450 { | 1450 { |
1451 WMAProDecodeCtx *s = avctx->priv_data; | 1451 WMAProDecodeCtx *s = avctx->priv_data; |
1452 GetBitContext* gb = &s->pgb; | 1452 GetBitContext* gb = &s->pgb; |
1453 const uint8_t* buf = avpkt->data; | 1453 const uint8_t* buf = avpkt->data; |
1454 int buf_size = avpkt->size; | 1454 int buf_size = avpkt->size; |
1455 int more_frames = 1; | 1455 int more_frames = 1; |
1456 int num_bits_prev_frame; | 1456 int num_bits_prev_frame; |
1457 int packet_sequence_number; | 1457 int packet_sequence_number; |
1458 | 1458 |
1459 s->samples = data; | 1459 s->samples = data; |
1460 s->samples_start = data; | 1460 s->samples_start = data; |
1461 s->samples_end = (float*)((int8_t*)data + *data_size); | 1461 s->samples_end = (float*)((int8_t*)data + *data_size); |
1462 *data_size = 0; | 1462 *data_size = 0; |
1463 | 1463 |
1464 if (!s->output_buffer_full) { | 1464 if (!s->output_buffer_full) { |
1465 s->buf_bit_size = buf_size << 3; | 1465 s->buf_bit_size = buf_size << 3; |
1466 | 1466 |
1467 /** sanity check for the buffer length */ | 1467 /** sanity check for the buffer length */ |
1468 if (buf_size < avctx->block_align) | 1468 if (buf_size < avctx->block_align) |
1469 return 0; | 1469 return 0; |
1470 | 1470 |
1471 buf_size = avctx->block_align; | 1471 buf_size = avctx->block_align; |
1472 | 1472 |
1473 /** parse packet header */ | 1473 /** parse packet header */ |
1474 init_get_bits(gb, buf, s->buf_bit_size); | 1474 init_get_bits(gb, buf, s->buf_bit_size); |
1475 packet_sequence_number = get_bits(gb, 4); | 1475 packet_sequence_number = get_bits(gb, 4); |
1476 skip_bits(gb, 2); | 1476 skip_bits(gb, 2); |
1477 | 1477 |
1478 /** get number of bits that need to be added to the previous frame */ | 1478 /** get number of bits that need to be added to the previous frame */ |
1479 num_bits_prev_frame = get_bits(gb, s->log2_frame_size); | 1479 num_bits_prev_frame = get_bits(gb, s->log2_frame_size); |
1480 dprintf(avctx, "packet[%d]: nbpf %x\n", avctx->frame_number, | 1480 dprintf(avctx, "packet[%d]: nbpf %x\n", avctx->frame_number, |
1481 num_bits_prev_frame); | 1481 num_bits_prev_frame); |
1482 | 1482 |
1483 /** check for packet loss */ | 1483 /** check for packet loss */ |
1484 if (!s->packet_loss && | 1484 if (!s->packet_loss && |
1485 ((s->packet_sequence_number + 1) & 0xF) != packet_sequence_number) { | 1485 ((s->packet_sequence_number + 1) & 0xF) != packet_sequence_number) { |
1486 s->packet_loss = 1; | 1486 s->packet_loss = 1; |
1487 av_log(avctx, AV_LOG_ERROR, "Packet loss detected! seq %x vs %x\n", | 1487 av_log(avctx, AV_LOG_ERROR, "Packet loss detected! seq %x vs %x\n", |
1488 s->packet_sequence_number, packet_sequence_number); | 1488 s->packet_sequence_number, packet_sequence_number); |
1489 } | 1489 } |
1490 s->packet_sequence_number = packet_sequence_number; | 1490 s->packet_sequence_number = packet_sequence_number; |
1491 | 1491 |
1492 if (num_bits_prev_frame > 0) { | 1492 if (num_bits_prev_frame > 0) { |
1493 /** append the previous frame data to the remaining data from the | 1493 /** append the previous frame data to the remaining data from the |
1494 previous packet to create a full frame */ | 1494 previous packet to create a full frame */ |
1495 save_bits(s, gb, num_bits_prev_frame, 1); | 1495 save_bits(s, gb, num_bits_prev_frame, 1); |
1496 dprintf(avctx, "accumulated %x bits of frame data\n", | 1496 dprintf(avctx, "accumulated %x bits of frame data\n", |
1497 s->num_saved_bits - s->frame_offset); | 1497 s->num_saved_bits - s->frame_offset); |
1498 | 1498 |
1499 /** decode the cross packet frame if it is valid */ | 1499 /** decode the cross packet frame if it is valid */ |
1500 if (!s->packet_loss) | 1500 if (!s->packet_loss) |
1501 decode_frame(s); | 1501 decode_frame(s); |
1502 } else if (s->num_saved_bits - s->frame_offset) { | 1502 } else if (s->num_saved_bits - s->frame_offset) { |
1503 dprintf(avctx, "ignoring %x previously saved bits\n", | 1503 dprintf(avctx, "ignoring %x previously saved bits\n", |
1504 s->num_saved_bits - s->frame_offset); | 1504 s->num_saved_bits - s->frame_offset); |
1505 } | 1505 } |
1506 | 1506 |
1507 s->packet_loss = 0; | 1507 s->packet_loss = 0; |
1508 | 1508 |
1509 } else { | 1509 } else { |
1510 /** continue decoding */ | 1510 /** continue decoding */ |
1511 s->output_buffer_full = 0; | 1511 s->output_buffer_full = 0; |
1512 more_frames = decode_frame(s); | 1512 more_frames = decode_frame(s); |