213
212
videoExtraData=new uint8_t[videoExtraDataSize];
214
213
memcpy(videoExtraData,dummy,videoExtraDataSize);
216
// _________________Setup video (cont) _______________
217
// ___________ Read 1st frame _________________
219
216
ADM_assert(_encode);
220
217
bitstream.data=videoBuffer;
223
bitstream.cleanup(0);
224
if(!(err=_encode->encode ( prefill, &bitstream)))// FIXME: We should never execute it more than once
226
printf("[FLV]:First frame error\n");
227
GUI_Error_HIG (QT_TR_NOOP("Error while encoding"), NULL);
236
if(!bitstream.flags & AVI_KEY_FRAME)
238
GUI_Error_HIG (QT_TR_NOOP("KeyFrame error"),QT_TR_NOOP( "The beginning frame is not a key frame.\nPlease move the A marker."));
242
219
// ____________Setup audio__________________
243
220
if(currentaudiostream)
300
273
ADM_usleep(4000);
302
275
//_____________GO !___________________
303
for(int frame=1;frame<total;frame++)
305
while(muxer->needAudio())
307
if(pq->Pop(audioBuffer,&alen,&sample))
311
muxer->writeAudioPacket(alen,audioBuffer,sample_got);
312
totalAudioSize+=alen;
313
encoding_gui->setAudioSize(totalAudioSize);
319
bitstream.cleanup(frameWrite);
321
r=_encode->encode ( prefill+frame, &bitstream);
323
if(!r && frame<total-2)
325
printf("[FLV]:Frame %u error\n",frame);
326
GUI_Error_HIG ("FLV",QT_TR_NOOP("Error while encoding"));
329
if(!bitstream.len && skipping)
331
printf("[FLV]Frame skipped (xvid ?)\n");
336
// printf("Prefill %u FrameWrite :%u Frame %u PtsFrame :%u\n",prefill,frameWrite,frame,bitstream.ptsFrame);
338
muxer->writeVideoPacket( &bitstream);
339
encoding_gui->setFrame(frame,bitstream.len,bitstream.out_quantizer,total);
340
if(!encoding_gui->isAlive())
277
for (uint32_t frame = 0; frame < total; frame++)
279
if (!encoding_gui->isAlive())
285
while(muxer->needAudio())
287
if(pq->Pop(audioBuffer,&alen,&sample))
291
muxer->writeAudioPacket(alen,audioBuffer,sample_got);
292
totalAudioSize+=alen;
293
encoding_gui->setAudioSize(totalAudioSize);
306
bitstream.cleanup(frame);
308
if (frame + frameDelay >= total)
310
if (_encode->getRequirements() & ADM_ENC_REQ_NULL_FLUSH)
311
r = _encode->encode(UINT32_MAX, &bitstream);
316
r = _encode->encode(frame + frameDelay, &bitstream);
320
printf("Encoding of frame %lu failed!\n", frame);
321
GUI_Error_HIG (QT_TR_NOOP("Error while encoding"), NULL);
324
else if (!receivedFrame && bitstream.len > 0)
326
if (!(bitstream.flags & AVI_KEY_FRAME))
328
GUI_Error_HIG (QT_TR_NOOP("KeyFrame error"), QT_TR_NOOP("The beginning frame is not a key frame.\nPlease move the A marker."));
333
receivedFrame = true;
336
if (bitstream.len == 0 && (_encode->getRequirements() & ADM_ENC_REQ_NULL_FLUSH))
338
printf("skipping frame: %u size: %i\n", frame + frameDelay, bitstream.len);
348
muxer->writeVideoPacket(&bitstream);
349
encoding_gui->setFrame(frame, bitstream.len, bitstream.out_quantizer, total);