summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-video/vdr2jpeg/files/vdr2jpeg-0.1.9-ffmpeg.patch')
-rw-r--r--media-video/vdr2jpeg/files/vdr2jpeg-0.1.9-ffmpeg.patch326
1 files changed, 326 insertions, 0 deletions
diff --git a/media-video/vdr2jpeg/files/vdr2jpeg-0.1.9-ffmpeg.patch b/media-video/vdr2jpeg/files/vdr2jpeg-0.1.9-ffmpeg.patch
new file mode 100644
index 000000000000..549a6c8f60ee
--- /dev/null
+++ b/media-video/vdr2jpeg/files/vdr2jpeg-0.1.9-ffmpeg.patch
@@ -0,0 +1,326 @@
+diff -urN vdr2jpeg-0.1.9.old/ffm.cpp vdr2jpeg-0.1.9/ffm.cpp
+--- vdr2jpeg-0.1.9.old/ffm.cpp 2012-04-21 09:53:26.727892390 +0200
++++ vdr2jpeg-0.1.9/ffm.cpp 2012-04-21 09:57:25.555890271 +0200
+@@ -21,6 +21,7 @@
+
+ extern "C" {
+ #include <libavutil/avutil.h>
++#include <libavutil/mathematics.h>
+ #include <libavcodec/avcodec.h>
+ #include <libavformat/avformat.h>
+ #include <libswscale/swscale.h>
+@@ -185,7 +186,7 @@
+ }else
+ ost->sync_opts= lrintf(get_sync_ipts(ost) / av_q2d(enc->time_base));
+
+- nb_frames= FFMIN(nb_frames, max_frames[CODEC_TYPE_VIDEO] - ost->frame_number);
++ nb_frames= FFMIN(nb_frames, max_frames[AVMEDIA_TYPE_VIDEO] - ost->frame_number);
+ if (nb_frames <= 0)
+ return true;
+
+@@ -221,7 +222,7 @@
+ if(dec->coded_frame && enc->coded_frame->pts != AV_NOPTS_VALUE)
+ pkt.pts= av_rescale_q(enc->coded_frame->pts, enc->time_base, ost->st->time_base);
+ if(dec->coded_frame && dec->coded_frame->key_frame)
+- pkt.flags |= PKT_FLAG_KEY;
++ pkt.flags |= AV_PKT_FLAG_KEY;
+
+ av_interleaved_write_frame(s, &pkt);
+ enc->coded_frame = old_frame;
+@@ -245,7 +246,7 @@
+ big_picture.quality = (int)ist->st->quality;
+ }else
+ big_picture.quality = (int)ost->st->quality;
+- big_picture.pict_type = 0;
++ big_picture.pict_type = (AVPictureType) 0;
+ // big_picture.pts = AV_NOPTS_VALUE;
+ big_picture.pts= ost->sync_opts;
+ // big_picture.pts= av_rescale(ost->sync_opts, AV_TIME_BASE*(int64_t)enc->time_base.num, enc->time_base.den);
+@@ -268,7 +269,7 @@
+ pkt.dts != AV_NOPTS_VALUE ? av_rescale(pkt.dts, enc->time_base.den, AV_TIME_BASE*(int64_t)enc->time_base.num) : -1);*/
+
+ if(enc->coded_frame && enc->coded_frame->key_frame)
+- pkt.flags |= PKT_FLAG_KEY;
++ pkt.flags |= AV_PKT_FLAG_KEY;
+ av_interleaved_write_frame(s, &pkt);
+ *frame_size = ret;
+ }
+@@ -316,13 +317,17 @@
+ data_size = 0;
+ if (ist->decoding_needed) {
+ switch(ist->st->codec->codec_type) {
+- case CODEC_TYPE_VIDEO:
++ case AVMEDIA_TYPE_VIDEO:
+ data_size = (ist->st->codec->width * ist->st->codec->height * 3) / 2;
+ /* XXX: allocate picture correctly */
+ avcodec_get_frame_defaults(&picture);
++ AVPacket pkt;
++ av_init_packet( &pkt );
++ pkt.data = ptr;
++ pkt.size = len;
+
+- ret = avcodec_decode_video(ist->st->codec,
+- &picture, &got_picture, ptr, len);
++ ret = avcodec_decode_video2(ist->st->codec,
++ &picture, &got_picture, &pkt);
+ ist->st->quality= picture.quality;
+ if (ret < 0)
+ goto fail_decode;
+@@ -341,7 +346,7 @@
+ goto fail_decode;
+ }
+ } else {
+- if(ist->st->codec->codec_type == CODEC_TYPE_VIDEO) {
++ if(ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
+ if (ist->st->codec->time_base.num != 0) {
+ ist->next_pts += ((int64_t)AV_TIME_BASE *
+ ist->st->codec->time_base.num) /
+@@ -354,16 +359,6 @@
+ len = 0;
+ }
+
+- /* frame rate emulation */
+- if (ist->st->codec->rate_emu) {
+- int64_t pts = av_rescale((int64_t) ist->frame * ist->st->codec->time_base.num, 1000000, ist->st->codec->time_base.den);
+- int64_t now = av_gettime() - ist->start;
+- if (pts > now)
+- usleep(pts - now);
+-
+- ist->frame++;
+- }
+-
+ #if 0
+ /* mpeg PTS deordering : if it is a P or I frame, the PTS
+ is the one of the next displayed one */
+@@ -398,7 +393,7 @@
+
+ if (ost->encoding_needed) {
+ switch(ost->st->codec->codec_type) {
+- case CODEC_TYPE_VIDEO:
++ case AVMEDIA_TYPE_VIDEO:
+ if(!do_video_out(os, ost, ist, &picture, &frame_size))
+ return -1;
+ break;
+@@ -415,9 +410,9 @@
+
+ avcodec_get_frame_defaults(&avframe);
+ ost->st->codec->coded_frame= &avframe;
+- avframe.key_frame = pkt->flags & PKT_FLAG_KEY;
++ avframe.key_frame = pkt->flags & AV_PKT_FLAG_KEY;
+
+- if (ost->st->codec->codec_type == CODEC_TYPE_VIDEO) {
++ if (ost->st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
+ ost->sync_opts++;
+ }
+
+@@ -438,7 +433,7 @@
+ opkt.flags= pkt->flags;
+
+ //FIXME remove the following 2 lines they shall be replaced by the bitstream filters
+- if(av_parser_change(ist->st->parser, ost->st->codec, &opkt.data, &opkt.size, data_buf, data_size, pkt->flags & PKT_FLAG_KEY))
++ if(av_parser_change(ist->st->parser, ost->st->codec, &opkt.data, &opkt.size, data_buf, data_size, pkt->flags & AV_PKT_FLAG_KEY))
+ opkt.destruct= av_destruct_packet;
+
+ av_interleaved_write_frame(os, &opkt);
+@@ -459,7 +454,7 @@
+ AVCodecContext *enc= ost->st->codec;
+ os = output_files[ost->file_index];
+
+- if(ost->st->codec->codec_type == CODEC_TYPE_VIDEO && (os->oformat->flags & AVFMT_RAWPICTURE))
++ if(ost->st->codec->codec_type == AVMEDIA_TYPE_VIDEO && (os->oformat->flags & AVFMT_RAWPICTURE))
+ continue;
+
+ if (ost->encoding_needed) {
+@@ -469,10 +464,10 @@
+ pkt.stream_index= ost->index;
+
+ switch(ost->st->codec->codec_type) {
+- case CODEC_TYPE_VIDEO:
++ case AVMEDIA_TYPE_VIDEO:
+ ret = avcodec_encode_video(enc, bit_buffer, bit_buffer_size, NULL);
+ if(enc->coded_frame && enc->coded_frame->key_frame)
+- pkt.flags |= PKT_FLAG_KEY;
++ pkt.flags |= AV_PKT_FLAG_KEY;
+ break;
+ default:
+ ret=-1;
+@@ -547,11 +542,6 @@
+ ist->index = k;
+ ist->discard = 1; /* the stream is discarded by default
+ (changed later) */
+-
+- if (ist->st->codec->rate_emu) {
+- ist->start = av_gettime();
+- ist->frame = 0;
+- }
+ }
+ }
+
+@@ -641,20 +631,20 @@
+ else
+ codec->time_base = ist->st->time_base;
+ switch(codec->codec_type) {
+- case CODEC_TYPE_VIDEO:
++ case AVMEDIA_TYPE_VIDEO:
+ codec->pix_fmt = icodec->pix_fmt;
+ codec->width = icodec->width;
+ codec->height = icodec->height;
+ codec->has_b_frames = icodec->has_b_frames;
+ break;
+- case CODEC_TYPE_SUBTITLE:
++ case AVMEDIA_TYPE_SUBTITLE:
+ break;
+ default:
+ return false;
+ }
+ } else {
+ switch(codec->codec_type) {
+- case CODEC_TYPE_VIDEO:
++ case AVMEDIA_TYPE_VIDEO:
+ ost->video_resample = ((codec->width != icodec->width) ||
+ (codec->height != icodec->height) ||
+ (codec->pix_fmt != icodec->pix_fmt));
+@@ -686,7 +676,7 @@
+ return false;
+ }
+ }
+- if(codec->codec_type == CODEC_TYPE_VIDEO){
++ if(codec->codec_type == AVMEDIA_TYPE_VIDEO){
+ int size= codec->width * codec->height;
+ bit_buffer_size= FFMAX(bit_buffer_size, 4*size);
+ }
+@@ -738,7 +728,7 @@
+ ist->file_index, ist->index);
+ return false;
+ }
+- //if (ist->st->codec->codec_type == CODEC_TYPE_VIDEO)
++ //if (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
+ // ist->st->codec->flags |= CODEC_FLAG_REPEAT_FIELD;
+ }
+ }
+@@ -786,7 +776,7 @@
+ ost = ost_table[i];
+ os = output_files[ost->file_index];
+ ist = ist_table[ost->source_index];
+- if(ost->st->codec->codec_type == CODEC_TYPE_VIDEO)
++ if(ost->st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
+ opts = ost->sync_opts * av_q2d(ost->st->codec->time_base);
+ else
+ opts = ost->st->pts.val * av_q2d(ost->st->time_base);
+@@ -924,22 +914,22 @@
+ void print_error(const char *filename, int err)
+ {
+ switch(err) {
+- case AVERROR_NUMEXPECTED:
++ case AVERROR(EINVAL):
+ fprintf(stderr, "%s: Incorrect image filename syntax.\n",
+ filename);
+ break;
+ case AVERROR_INVALIDDATA:
+ fprintf(stderr, "%s: Error while parsing header\n", filename);
+ break;
+- case AVERROR_NOFMT:
++ case AVERROR(EILSEQ):
+ fprintf(stderr, "%s: Unknown format\n", filename);
+ break;
+- case AVERROR_IO:
++ case AVERROR(EIO):
+ fprintf(stderr, "%s: I/O error occured\n"
+ "Usually that means that input file is truncated and/or corrupted.\n",
+ filename);
+ break;
+- case AVERROR_NOMEM:
++ case AVERROR(ENOMEM):
+ fprintf(stderr, "%s: memory allocation error occured\n", filename);
+ break;
+ default:
+@@ -968,9 +958,9 @@
+ ap->pix_fmt = frame_pix_fmt;
+ ap->channel = 0;
+ ap->standard = 0;
+- ap->video_codec_id = CODEC_ID_NONE;
++ ic->video_codec_id = CODEC_ID_NONE;
+ if(pgmyuv_compatibility_hack)
+- ap->video_codec_id= CODEC_ID_PGMYUV;
++ ic->video_codec_id= CODEC_ID_PGMYUV;
+
+ /* open the input file with generic libav function */
+ err = av_open_input_file(&ic, filename, file_iformat, 0, ap);
+@@ -999,7 +989,7 @@
+ AVCodecContext *enc = ic->streams[i]->codec;
+ enc->thread_count= 1;
+ switch(enc->codec_type) {
+- case CODEC_TYPE_VIDEO:
++ case AVMEDIA_TYPE_VIDEO:
+ frame_height = enc->height;
+ frame_width = enc->width;
+ frame_aspect_ratio = av_q2d(enc->sample_aspect_ratio) * enc->width / enc->height;
+@@ -1020,13 +1010,12 @@
+ frame_rate = rfps;
+ frame_rate_base = rfps_base;
+
+- enc->rate_emu = 0;
+ break;
+- case CODEC_TYPE_DATA:
++ case AVMEDIA_TYPE_DATA:
+ break;
+- case CODEC_TYPE_SUBTITLE:
++ case AVMEDIA_TYPE_SUBTITLE:
+ break;
+- case CODEC_TYPE_UNKNOWN:
++ case AVMEDIA_TYPE_UNKNOWN:
+ break;
+ default:
+ //av_abort();
+@@ -1058,12 +1047,12 @@
+ for(i=0;i<ic->nb_streams;i++) {
+ AVCodecContext *enc = ic->streams[i]->codec;
+ switch(enc->codec_type) {
+- case CODEC_TYPE_VIDEO:
++ case AVMEDIA_TYPE_VIDEO:
+ has_video = 1;
+ break;
+- case CODEC_TYPE_DATA:
+- case CODEC_TYPE_UNKNOWN:
+- case CODEC_TYPE_SUBTITLE:
++ case AVMEDIA_TYPE_DATA:
++ case AVMEDIA_TYPE_UNKNOWN:
++ case AVMEDIA_TYPE_SUBTITLE:
+ break;
+ default:
+ //av_abort();
+@@ -1086,14 +1075,14 @@
+ fprintf(stderr, "Could not alloc stream\n");
+ return false;
+ }
+- avcodec_get_context_defaults2(st->codec, CODEC_TYPE_VIDEO);
++ avcodec_get_context_defaults2(st->codec, AVMEDIA_TYPE_VIDEO);
+
+ video_enc = st->codec;
+
+ {
+ AVCodec *codec;
+
+- codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, CODEC_TYPE_VIDEO);
++ codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, AVMEDIA_TYPE_VIDEO);
+
+ video_enc->codec_id = codec_id;
+ codec = avcodec_find_encoder(codec_id);
+@@ -1203,7 +1192,7 @@
+ oc = avformat_alloc_context();
+
+ if (!file_oformat) {
+- file_oformat = guess_format(NULL, filename, NULL);
++ file_oformat = av_guess_format(NULL, filename, NULL);
+ if (!file_oformat) {
+ fprintf(stderr, "Unable for find a suitable output format for '%s'\n",
+ filename);
+@@ -1239,7 +1228,7 @@
+ /* check filename in case of an image number is expected */
+ if (oc->oformat->flags & AVFMT_NEEDNUMBER) {
+ if (!av_filename_number_test(oc->filename)) {
+- print_error(oc->filename, AVERROR_NUMEXPECTED);
++ print_error(oc->filename, AVERROR(EINVAL));
+ return false;
+ }
+ }