aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-10-11 03:24:24 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-10-11 03:24:24 +0200
commit0d9816d36341bac163b640ccdba2bc5b4dd32614 (patch)
tree06a4ed073d511dcacee6bc5d0b9f4b0f30da2269
parentc7fb1a1844644536340591d4d0e16180527f1627 (diff)
downloadosc-graphics-0d9816d36341bac163b640ccdba2bc5b4dd32614.tar.gz
added support for newer ffmpeg libraries
-rw-r--r--src/recorder.cpp30
1 files changed, 25 insertions, 5 deletions
diff --git a/src/recorder.cpp b/src/recorder.cpp
index 1a480fc..9b9454c 100644
--- a/src/recorder.cpp
+++ b/src/recorder.cpp
@@ -108,14 +108,22 @@ Recorder::start(const char *filename, const char *codecname)
if (!ffmpeg->oformat)
ffmpeg->oformat = av_guess_format("dvd", NULL, NULL);
- ffmpeg->preload = (int)(0.5 * AV_TIME_BASE);
+ //ffmpeg->preload = (int)(0.5 * AV_TIME_BASE);
ffmpeg->max_delay = (int)(0.7 * AV_TIME_BASE);
+#if LIBAVFORMAT_VERSION_MAJOR < 54
err = url_fopen(&ffmpeg->pb, filename, URL_WRONLY);
if (err < 0) {
FFMPEG_ERROR(-err, "url_fopen");
exit(EXIT_FAILURE);
}
+#else
+ err = avio_open(&ffmpeg->pb, filename, AVIO_FLAG_WRITE);
+ if (err < 0) {
+ FFMPEG_ERROR(-err, "avio_open");
+ exit(EXIT_FAILURE);
+ }
+#endif
stream = av_new_stream(ffmpeg, 0);
if (!stream) {
@@ -125,9 +133,13 @@ Recorder::start(const char *filename, const char *codecname)
stream->codec = avcodec_alloc_context();
+#if LIBAVCODEC_VERSION_MAJOR < 54
avcodec_get_context_defaults2(stream->codec, CODEC_TYPE_VIDEO);
-
stream->codec->codec_type = CODEC_TYPE_VIDEO;
+#else
+ avcodec_get_context_defaults2(stream->codec, AVMEDIA_TYPE_VIDEO);
+ stream->codec->codec_type = AVMEDIA_TYPE_VIDEO;
+#endif
stream->codec->bit_rate = 6000000;
@@ -223,14 +235,18 @@ Recorder::start(const char *filename, const char *codecname)
pkt = new AVPacket;
- err = av_set_parameters(ffmpeg, 0);
+ /* try to write a header */
+#if LIBAVFORMAT_VERSION_MAJOR < 54
+ err = av_set_parameters(ffmpeg, NULL);
if (err < 0) {
FFMPEG_ERROR(-err, "av_set_parameters");
exit(EXIT_FAILURE);
}
- /* try to write a header */
av_write_header(ffmpeg);
+#else
+ avformat_write_header(ffmpeg, NULL);
+#endif
start_time = SDL_GetTicks();
@@ -286,7 +302,11 @@ Recorder::stop()
stream = NULL;
}
if (ffmpeg) {
+#if LIBAVFORMAT_VERSION_MAJOR < 54
url_fclose(ffmpeg->pb);
+#else
+ avio_close(ffmpeg->pb);
+#endif
av_free(ffmpeg);
ffmpeg = NULL;
}
@@ -334,7 +354,7 @@ Recorder::record(SDL_Surface *surf)
pkt->stream_index = stream->index;
/* set keyframe flag if needed */
if (stream->codec->coded_frame->key_frame)
- pkt->flags |= PKT_FLAG_KEY;
+ pkt->flags |= AV_PKT_FLAG_KEY;
/* write encoded data into packet */
pkt->data = encodeFrameBuffer;
/* set the correct size of this packet */