29 #define ROQ_FRAME_SIZE 735
30 #define ROQ_HEADER_SIZE 8
32 #define MAX_DPCM (127*127)
49 #if FF_API_OLD_ENCODE_AUDIO
84 #if FF_API_OLD_ENCODE_AUDIO
105 diff = current - *previous;
114 result += diff > result*result+result;
119 diff = result*result;
122 predicted = *previous +
diff;
125 if (predicted > 32767 || predicted < -32768) {
131 result |= negative << 7;
133 *previous = predicted;
141 int i, stereo, data_size, ret;
142 const int16_t *
in = frame ? (
const int16_t *)frame->
data[0] :
NULL;
148 if (!in && context->input_frames >= 8)
151 if (in && context->input_frames < 8) {
152 memcpy(&context->frame_buffer[context->buffered_samples * avctx->
channels],
154 context->buffered_samples += avctx->
frame_size;
155 if (context->input_frames == 0)
156 context->first_pts = frame->
pts;
157 if (context->input_frames < 7) {
158 context->input_frames++;
162 if (context->input_frames < 8) {
163 in = context->frame_buffer;
167 context->lastSample[0] &= 0xFF00;
168 context->lastSample[1] &= 0xFF00;
171 if (context->input_frames == 7)
172 data_size = avctx->
channels * context->buffered_samples;
180 bytestream_put_byte(&
out, stereo ? 0x21 : 0x20);
181 bytestream_put_byte(&
out, 0x10);
182 bytestream_put_le32(&
out, data_size);
185 bytestream_put_byte(&
out, (context->lastSample[1])>>8);
186 bytestream_put_byte(&
out, (context->lastSample[0])>>8);
188 bytestream_put_le16(&
out, context->lastSample[0]);
191 for (i = 0; i < data_size; i++)
194 avpkt->
pts = context->input_frames <= 7 ? context->first_pts : frame->
pts;
197 context->input_frames++;
199 context->input_frames =
FFMAX(context->input_frames, 8);