From f7523239e45fb930db0273170cb93cb09fe370b5 Mon Sep 17 00:00:00 2001 From: deva Date: Tue, 3 May 2005 17:12:53 +0000 Subject: Fixed a bug (forgot to set the frametime). --- src/mov_encoder.cc | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/mov_encoder.cc b/src/mov_encoder.cc index 9554d09..917cd32 100644 --- a/src/mov_encoder.cc +++ b/src/mov_encoder.cc @@ -39,6 +39,9 @@ /* * $Log$ + * Revision 1.11 2005/05/03 17:12:53 deva + * Fixed a bug (forgot to set the frametime). + * * Revision 1.10 2005/05/03 08:31:59 deva * Removed the error object, and replaced it with a more generic info object. * @@ -203,49 +206,49 @@ void MovEncoder::encode(Frame *dvframe) // encode_audio(dvframe); } +#define WOW(x) fprintf(stderr, x); fflush(stderr); void MovEncoder::encode_video(Frame *dvframe) { - int16_t audiobuffer[48000]; int ret; AVFrame *rawframe = avcodec_alloc_frame(); - - uint8_t *ptr; + static int64_t timestamp = 0LL; int got_picture = 1; - int got_sound = 1; - int len; - ptr = (uint8_t *)dvframe->data; - len = dvframe->size; + // uint8_t *ptr; + // int len; + + // ptr = (uint8_t *)dvframe->data; + // len = dvframe->size; ///////////////////////// DECODE VIDEO - ret = avcodec_decode_video(dcc,//&dfc->streams[0]->codec, - rawframe, &got_picture, ptr, len); - if(!ret) { + // ret = avcodec_decode_video(dcc, rawframe, &got_picture, ptr, len); + ret = avcodec_decode_video(dcc, rawframe, &got_picture, dvframe->data, dvframe->size); + rawframe->pts = timestamp; + timestamp += 40000; + fprintf(stderr, "ret fra decode: %d\n", ret); fflush(stderr); + + if(ret <= 0) { fprintf(stderr, "Decoder fuckup during video decoding!\n"); fflush(stderr); return; } - ///////////////////////// ENCODE VIDEO ret = avcodec_encode_video(ecc, video_buffer, VIDEO_BUFFER_SIZE, rawframe); - - if(!ret) { + + if(ret <= 0) { fprintf(stderr, "MovEncoder fuckup during video encoding!\n"); fflush(stderr); return; } epkt.data = video_buffer; epkt.size = ret; - if(ecc->coded_frame) epkt.pts = ecc->coded_frame->pts; - if(ecc->coded_frame && ecc->coded_frame->key_frame) epkt.flags |= PKT_FLAG_KEY; av_write_frame(efc, &epkt); - - av_free(rawframe); FREE(rawframe); + av_free(rawframe); } #define INBUF_SIZE 48000 -- cgit v1.2.3