summaryrefslogtreecommitdiffstats
path: root/screenshot.c
diff options
context:
space:
mode:
authorUoti Urpala <uau@mplayer2.org>2012-01-28 13:41:36 +0200
committerUoti Urpala <uau@mplayer2.org>2012-02-01 22:46:27 +0200
commitdb8cdc73e38c3490389212d94ae9b92dfddd5975 (patch)
treeee6486888b90afe0e5a42a8e0c080366f5c8a7e5 /screenshot.c
parent637d6b7c8e12b4f71ccbc64f73a402b573e71697 (diff)
downloadmpv-db8cdc73e38c3490389212d94ae9b92dfddd5975.tar.bz2
mpv-db8cdc73e38c3490389212d94ae9b92dfddd5975.tar.xz
Update Libav API uses
Change various code to use the latest Libav API. The libavcodec error_recognition setting has been removed and replaced with different semantics. I removed the "--lavdopts=er=<value>" option accordingly, as I don't think it's widely enough used to be worth attempting to emulate the old option semantics using the new API. A new option with the new semantics can be added later if needed. Libav dropped APIs that were necessary with all Libav versions until quite recently (like setting avctx->age), and it would thus not be possible to keep compatibility with previous Libav versions without adding workarounds. The new APIs also had some bugs/limitations in the recent Libav release 0.8, and it would not work fully (at least some avcodec options would not be set correctly). Because of those issues, this commit makes no attempt to maintain compatibility with anything but the latest Libav git head. Hopefully the required fixes and improvements will be included in a following Libav point release.
Diffstat (limited to 'screenshot.c')
-rw-r--r--screenshot.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/screenshot.c b/screenshot.c
index 9b8c67a89a..55107bf930 100644
--- a/screenshot.c
+++ b/screenshot.c
@@ -68,11 +68,15 @@ static int write_png(screenshot_ctx *ctx, struct mp_image *image)
void *outbuffer = NULL;
int success = 0;
- AVCodecContext *avctx = avcodec_alloc_context();
+ struct AVCodec *png_codec = avcodec_find_encoder(CODEC_ID_PNG);
+ AVCodecContext *avctx = NULL;
+ if (!png_codec)
+ goto print_open_fail;
+ avctx = avcodec_alloc_context3(png_codec);
if (!avctx)
- goto error_exit;
-
- if (avcodec_open(avctx, avcodec_find_encoder(CODEC_ID_PNG))) {
+ goto print_open_fail;
+ if (avcodec_open2(avctx, png_codec, NULL) < 0) {
+ print_open_fail:
mp_msg(MSGT_CPLAYER, MSGL_INFO, "Could not open libavcodec PNG encoder"
" for saving screenshot\n");
goto error_exit;