| 951 | |
| 952 | |
| 953 | static void decode_subpacket(COOKContext *q, COOKSubpacket* p, const uint8_t *inbuffer, int16_t *outbuffer) { |
| 954 | int sub_packet_size = p->size; |
| 955 | /* packet dump */ |
| 956 | // for (i=0 ; i<sub_packet_size ; i++) { |
| 957 | // av_log(q->avctx, AV_LOG_ERROR, "%02x", inbuffer[i]); |
| 958 | // } |
| 959 | // av_log(q->avctx, AV_LOG_ERROR, "\n"); |
| 960 | memset(q->decode_buffer_1,0,sizeof(q->decode_buffer_1)); |
| 961 | decode_bytes_and_gain(q, p, inbuffer, &p->gains1); |
| 962 | |
| 963 | if (p->joint_stereo) { |
| 964 | joint_decode(q, p, q->decode_buffer_1, q->decode_buffer_2); |
| 965 | } else { |
| 966 | mono_decode(q, p, q->decode_buffer_1); |
| 967 | |
| 968 | if (p->num_channels == 2) { |
| 969 | decode_bytes_and_gain(q, p, inbuffer + sub_packet_size/2, &p->gains2); |
| 970 | mono_decode(q, p, q->decode_buffer_2); |
| 971 | } |
| 972 | } |
| 973 | |
| 974 | mlt_compensate_output(q, q->decode_buffer_1, &p->gains1, |
| 975 | p->mono_previous_buffer1, outbuffer, p->ch_idx); |
| 976 | |
| 977 | if (p->num_channels == 2) { |
| 978 | if (p->joint_stereo) { |
| 979 | mlt_compensate_output(q, q->decode_buffer_2, &p->gains1, |
| 980 | p->mono_previous_buffer2, outbuffer, p->ch_idx + 1); |
| 981 | } else { |
| 982 | mlt_compensate_output(q, q->decode_buffer_2, &p->gains2, |
| 983 | p->mono_previous_buffer2, outbuffer, p->ch_idx + 1); |
| 984 | } |
| 985 | } |
| 986 | |
| 987 | } |
| 988 | |
| 989 | |
| 990 | /** |
no test coverage detected