summaryrefslogtreecommitdiffstats
path: root/libmpcodecs/vd_ffmpeg.c
Commit message (Collapse)AuthorAgeFilesLines
* vd_ffmpeg: explicitly set thread count even if 1Uoti Urpala2012-01-171-2/+1
| | | | | | | | | | | Libav started automatically enabling threaded decoding a while ago. This is not safe, as it means callbacks can suddenly get called from other threads and outside calls to libavcodec. We need to know when threading will be used and disable thread-unsafe callbacks in those cases. Explicitly set thread count to 1 instead of leaving it at 0 (which triggers the autodetection) when we are not requesting more threads; this should make sure that autodetection on libavcodec side will not be used.
* Libav API updates (remove most deprecated-in-0.7 uses)Uoti Urpala2011-12-221-17/+2
| | | | | | | | Update various code using Libav libraries to remove use of API features that were deprecated at Libav release 0.7. I think this removes them all with the exception of URLContext functions still used in stream_ffmpeg.c (at least other uses that generated deprecation warnings with libraries from 0.7 are removed).
* configure, build: require at least Libav 0.7Uoti Urpala2011-12-221-6/+1
| | | | | | | | | | | | | | | | Require versions of the Libav libraries corresponding to Libav release 0.7. These are: libavutil 51.7.0 libavcodec 53.5.0 libavformat 53.2.0 libswscale 2.0.0 libpostproc 52.0.0 Also disable the fallback to simple header check if these libraries could not be found with pkg-config; now compiling without pkg-config support for these always requires explicitly setting --enable-libav and any needed compiler/linker flags. The simple check would have let compilation proceed even if a version mismatch was detected.
* commands, vd_ffmpeg: fix switch_ratio slave commandUoti Urpala2011-11-141-34/+38
| | | | | | | | | The implementation of the switch_ratio command was hacky and called mpcodecs_config_vo() to reconfigure the filter/VO chain from under an existing decoder. This call no longer worked properly with vd_ffmpeg after that started using mpcodec_config_vo2(). Add new video decoder control command VDCTRL_RESET_ASPECT and use this to tell vd_ffmpeg to reinitialize the output chain properly.
* vd_ffmpeg: disable slice use that fails with size changesUoti Urpala2011-11-141-9/+0
| | | | | | | | | | | | | | | | When not using direct rendering, vd_ffmpeg created an mp_image struct before calling libavcodec decoder, so that possible slice support could be checked from the mpi_image and output would be ready for slice-drawing calls. However, this behavior is unsound with decoders that can change output size, as the parameters can change after the mp_image was created. Disable the code creating the mp_image at that point, which also disables use of slices in this case. Slices are disabled with threading anyway, so I think trying to add workarounds to support them is not a high priority. I think this code has always been buggy, but before common thread use it was rarely executed because the direct-rendering case was used instead.
* vd_ffmpeg.c: remove useless realvideo avctx->sub_id settingUoti Urpala2011-10-251-1/+0
| | | | Libavcodec has ignored the caller-set sub_id value since 2006.
* cosmetics: vd_ffmpeg.c: reformatUoti Urpala2011-10-221-348/+301
|
* core, demux, vd_ffmpeg: pass side data from demux_lavf to vd_ffmpegUoti Urpala2011-08-201-2/+10
| | | | | | | | | | | | Pass the libavformat packet side_data field from demux_lavf to vd_ffmpeg. Libavcodec/libavformat use this field for palette data, and passing it is required for the playback of some paletted video codecs. The implementation works by giving vd_ffmpeg a copy of the struct demux_packet used to store the video packet (from which it can access the avpacket field). The definition of struct demux_packet is moved to new file demux_packet.h so that vd_ffmpeg.c can use it without including all of demuxer.h.
* cleanup: do libav* initialization on startupUoti Urpala2011-07-181-14/+0
| | | | | | | Do the global initialization of libavcodec and libavformat (avcodec_register_all(), av_register_all()) immediately on program startup and remove the initialization calls from various individual modules that use libavcodec/libavformat functionality.
* vd_ffmpeg: make "-lavdopts lowres" handling more robustUoti Urpala2011-07-091-11/+11
| | | | | | | | Remove the copy of the "lowres" field that vd_ffmpeg kept in its private struct and use the value from AVCodecContext directly instead. The copy gave no benefit and it could be set to the wrong value if someone used "-lavdopts o=lowres=X" (which would change the real value but not the copy).
* vd_ffmpeg: fix "-lavdopts skipframe" supportUoti Urpala2011-07-091-1/+5
| | | | | | | Support for -lavdopts skipframe had been broken since commit bc767c2a9 as framedrop logic now set the same field and thus overwrote the value set from the option. Change that code to set it to the original value instead of 0 when not dropping frames.
* debug output: reduce verbosity of some frequent messagesUoti Urpala2011-07-051-1/+1
| | | | | Drop from frequent (per-frame) messages from DBG2 to DBG3. Drop VDPAU clock adjustment messages from V to DBG2.
* vd_ffmpeg.c: fix one case of "-lavdopts vstats" crashingiive2011-06-291-1/+4
| | | | | | | | | | | Fix segfault with -lavdopts vstats and some codecs. The vstats option relies on avctx->coded_frame being filled. Unfortunately not all codecs do that (e.g. VP8) thus causing NULL dereference. FFmpeg code seems to always check if coded_frame != NULL, so we should do the same. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33347 b3059339-0415-0410-9bf9-f77b7e298cf2
* vd_ffmpeg: autoselect output colorspaces without codecs.confUoti Urpala2011-06-261-1/+12
| | | | | | | | | | | | | Selecting the colorspace to output from a decoder is done in the function mpcodecs_config_vo(). Add a new version of this function, mpcodecs_config_vo2(), that allows the decoder to specify a list of candidate colorspaces instead of always using a hardcoded list specified in the codecs.conf entry. If the codecs.conf entry has any "out" lines then those still take priority and the decoder-provided list (if any) is ignored. Make vd_ffmpeg provide a list of the colorspaces it's willing to output. Remove "out" lines from most entries for libavcodec video decoders in codecs.conf, so that the automatic values are now used instead.
* vo_xvmc: drop XvMC supportUoti Urpala2011-05-091-41/+0
| | | | | | | | | Due to libavcodec changes vo_xvmc would have needed some modifications to keep working. However, I think there's little real demand for XvMC, so I'll just drop XvMC support. XvMC only supported MPEG-2, making it of very limited usefulness nowadays, plus the vo_xvmc implementation was not high quality and never worked particularly well or reliably anyway.
* cleanup: shut up more warningsClément Bœsch2011-05-061-2/+3
|
* Merge branch 'mplayer1_changes'Uoti Urpala2011-05-021-1/+10
|\
| * vd_ffmpeg: Make DR work with reget_buffer without buffer_hintsreimar2011-05-021-0/+3
| | | | | | | | | | | | Allow DR to work with reget_buffer when no buffer_hints are set. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33287 b3059339-0415-0410-9bf9-f77b7e298cf2
| * vd_ffmpeg: handle reget_buffer in DRI failure fallback codereimar2011-05-021-0/+6
| | | | | | | | | | | | Allow reget_buffer to somewhat work after direct rendering failure. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33286 b3059339-0415-0410-9bf9-f77b7e298cf2
| * vd_ffmpeg: require aligned stride in get_buffer()zuxy2011-04-131-1/+1
| | | | | | | | | | | | | | Change MP_IMGFLAG_ACCEPT_STRIDE to MP_IMGFLAG_ACCEPT_ALIGNED_STRIDE in get_buffer() as various FFmpeg assembly routines assume aligned input. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33097 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Update libav API usesUoti Urpala2011-04-201-6/+4
|/ | | | | | | | | | | Update various code to use newer alternatives instead of deprecated functions/fields that are being dropped at libav API bump. An exception is avcodec_thread_init() which is being dropped even though it's still _necessary_ with fairly recent libav versions, so there's no good alternative which would work with both those recent versions and latest libavcodec. I think there are grounds to consider the drop premature and revert it for now; if that doesn't happen I'll add a version-test #if check around it later.
* vd_ffmpeg: fix thread count setting with latest ffmpeg-mtUoti Urpala2011-03-291-1/+3
| | | | | | | | Recent ffmpeg-mt versions changed the API for setting the number of decoding threads to use (I'm not sure whether dropping backwards compatibility was intentional or not). As a result only one thread was used. Make the thread setting compatible with the new API to restore proper multithreaded decoding.
* fix compilation with old FFmpeg versionsUoti Urpala2011-02-081-1/+8
| | | | | | | | | | | | af_lavcac3enc: use old SampleFormat names without AV_ prefix, the latter were only added in 2010-11 vd_ffmpeg: add ifdef around CODEC_ID_LAGARITH use demux_real: use ffmpeg_files/intreadwrite.h stream/http.c, stream/realrtsp/real.c: define AV_BASE64_SIZE macro for old libavutil versions lacking it
* codecs.conf, vd_ffmpeg: Enable fflagarith video decodercehoyos2011-01-311-1/+1
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32773 b3059339-0415-0410-9bf9-f77b7e298cf2
* vd_ffmpeg: set thread count to number of cores on machine by defaultUoti Urpala2010-12-201-1/+14
| | | | | | | | | | | Make "-lavdopts threads=0" mean an autodetected number of threads, and make that the default value of the option. Also increase the upper limit of the option from 8 to 16. Add new file osdep/numcores.c which tries to determine the number of cores available on the machine. numcores.c is based (heavily modified) on public domain numcpus.c by Philip Willoughby <pgw99@doc.ic.ac.uk>, downloaded from http://csgsoft.doc.ic.ac.uk/numcpus/
* vd_ffmpeg: fix MP_IMGTYPE selection for non-ref non-B framesreimar2010-12-161-1/+1
| | | | | | | | | | | | | | | Change direct rendering buffer allocation code to treat non-ref frames like B-frames even if has_b_frames is not set and they are indeed not B-frames (no reordering). Treating it as an I/P frame would violate the assumptions of MPlayer's buffering system, which thinks only the latest previous I/P frame is needed (in addition to one possibly being decoded). In this case the previous I/P frame will still be needed in the future, not the non-ref frame being decoded now. This happens with flv files, as in bug #1079, and this change fixes that corruption. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32700 b3059339-0415-0410-9bf9-f77b7e298cf2
* vd_ffmpeg: Reset ctx->vo_initialized to 0 on a resolution changereimar2010-12-161-0/+1
| | | | | | | | Otherwise we might think the filter chain/vo is ready when it actually is not, leading to a crash. Fixes crash part of bug 1156. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32690 b3059339-0415-0410-9bf9-f77b7e298cf2
* vd_ffmpeg: compare IMGFMT instead of PIX_FMTreimar2010-11-081-3/+3
| | | | | | | Use IMGFMT to compare instead of PIX_FMT to avoid issues with the "JPEG" formats like PIX_FMT_YUVJ422P. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32594 b3059339-0415-0410-9bf9-f77b7e298cf2
* video: simplify some tests with a new IMGFMT_IS_HWACCEL macroreimar2010-11-081-4/+3
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32575 b3059339-0415-0410-9bf9-f77b7e298cf2
* vd_ffmpeg: improve aspect ratio handlingreimar2010-11-021-5/+7
| | | | | | | | | Respect container aspect first if available, but change to ratio based on video codec level information if there's a resolution or pixel aspect change from the original codec values in the middle of the video. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32525 b3059339-0415-0410-9bf9-f77b7e298cf2
* cleanup: malloc+memset->calloc, sizeof(TYPE)->sizeof(*ptr)reimar2010-11-021-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace malloc+memset by calloc git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32181 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace malloc+memset by calloc. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32182 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace malloc+memset by calloc. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32183 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace some sizeof(type) by sizeof(*pointer) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32184 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace malloc+memset by calloc. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32186 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace malloc+memset by calloc. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32187 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace malloc+memset by calloc git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32188 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace sizoef(type) by sizeof(*ptrvar). Besides being consistent with FFmpeg style, this reduces the size of a patch to rename these types to not conflict with the windows.h definitions. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32189 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace malloc+memset by calloc. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32191 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace malloc+memset by calloc. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32192 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace sizeof(type) by sizeof(*ptrvar) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32193 b3059339-0415-0410-9bf9-f77b7e298cf2 Remove a useless cast. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32194 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace sizeof(type) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32195 b3059339-0415-0410-9bf9-f77b7e298cf2 Remove a useless cast. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32196 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace several sizeof(WAVEFORMATEX) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32197 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace one more instance of sizeof(WAVEFORMATEX); fix compilation. patch by Clément Bœsch, ubitux gmail com git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32199 b3059339-0415-0410-9bf9-f77b7e298cf2 Avoid some pointless uses of sizeof() and one related cast. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32200 b3059339-0415-0410-9bf9-f77b7e298cf2 Merge one malloc() + memset() invocation into calloc(). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32202 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace malloc+memset by calloc git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32203 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace sizeof(WAVEFORMATEX) occurrences. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32205 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace malloc+memset by calloc. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32206 b3059339-0415-0410-9bf9-f77b7e298cf2 Replace sizeof(BITMAPINFOHEADER) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32207 b3059339-0415-0410-9bf9-f77b7e298cf2
* Add central init_avcodec() to avoid duplicated libavcodec init codediego2010-11-021-5/+11
| | | | | | | | | | | | | | | | Patch by Vlad Seryakov, vseryakov gmail com git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32043 b3059339-0415-0410-9bf9-f77b7e298cf2 Refactor more instances of avcodec_initialized handling into init_avcodec(). This is a leftover from the previous commit. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32044 b3059339-0415-0410-9bf9-f77b7e298cf2 Add missing #include for vd_ffmpeg.h; fixes the warning: libmpcodecs/vf_zrmjpeg.c:472: warning: implicit declaration of function 'init_avcodec' git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32176 b3059339-0415-0410-9bf9-f77b7e298cf2
* vd_ffmpeg: Set avctx->coded_width/coded_height instead of width/heightreimar2010-11-021-2/+2
| | | | | | That's how it is supposed to be done. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32037 b3059339-0415-0410-9bf9-f77b7e298cf2
* ad_ffmpeg, vd_ffmpeg: remove pointless castsdiego2010-11-021-1/+1
| | | | | | | | Remove pointless casts of avcodec_find_decoder_by_name() return value. avcodec_find_decoder_by_name() already returns AVCodec*, so there is no need to cast the return value to this type. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32007 b3059339-0415-0410-9bf9-f77b7e298cf2
* vd_ffmpeg: add av_unused attribute to swap_palette()diego2010-11-021-1/+1
| | | | | | Only used on bigendian machines. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31586 b3059339-0415-0410-9bf9-f77b7e298cf2
* vf_ffmpeg: make VP8 decoder work by disabling drreimar2010-11-021-1/+1
| | | | | | | Allow the FFmpeg VP8 decoder to work by disabling dr for it (thus we do not need edge emulation). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31560 b3059339-0415-0410-9bf9-f77b7e298cf2
* vd_ffmpeg: Minor code simplification.reimar2010-10-271-1/+2
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31336 b3059339-0415-0410-9bf9-f77b7e298cf2
* vd_ffmpeg: fix aspect ratio problems with recent FFmpegUoti Urpala2010-10-161-0/+2
| | | | | | | | | | The code left ctx->last_sample_aspect_ratio at 0/0 when allocating a context. In older FFmpeg versions av_cmp_q() against 0/0 always said the numbers are equal; but this changed recently, triggering incorrect overwrite of container aspect ratio. The logic looks like it'd need further fixes, but for now just initialize last_sample_aspect_ratio to 0/1; this should restore the previous behavior from before FFmpeg changes, which worked well enough for the most common cases.
* vd_ffmpeg: fix calloc/av_free mixupUoti Urpala2010-10-161-7/+4
| | | | | | avctx->palctrl was allocated with calloc() but freed with av_freep(). Free it with free() instead. Also change the main decoder context allocation to use talloc.
* cosmetics: "struct vf_instance* vf" -> "struct vf_instance *vf"Uoti Urpala2010-05-291-1/+2
| | | | | | | Change 'struct vf_instance' pointer arguments to more standard style as in the subject. Also some other minor formatting fixes. Patch by Diego Biurrun.
* vd_ffmpeg: remove #ifdef for old FFmpeg-mt versionsUoti Urpala2010-05-071-6/+0
| | | | | The #ifdef is obsolete since trying to compile against the relevant old versions will fail for other reasons.
* vd_ffmpeg: use skip_frame instead of deprecated hurry_up fieldUoti Urpala2010-05-041-1/+6
|
* Delete things related to old translation systemUoti Urpala2010-03-101-1/+0
| | | | | Remove the help/ subdirectory, configure code to create toplevel help_mp.h, and all the '#include "help_mp.h"' lines from .c files.
* Merge svn changes up to r30643Uoti Urpala2010-03-101-1/+13
|\
| * Handle negative height in draw_slice from FFmpeg in vd_ffmpeg.c, since atreimar2010-02-171-1/+13
| | | | | | | | | | | | | | | | | | | | least vo_xv and vo_sdl can not handle it and the scale filter seems to work fine either way. The FFmpeg vp3/Theora decoder produces such slices. Fixes bug #1646. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30630 b3059339-0415-0410-9bf9-f77b7e298cf2
| * libmpcodecs: Mark functions not used outside of their files as static.diego2010-02-161-2/+4
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30597 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Mark all ad_info_t/vd_info_t structure declarations as const.diego2010-02-121-1/+1
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30546 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r30463Uoti Urpala2010-03-091-0/+18
|\| | | | | | | | | | | Note that r30455 is wrong, that commit does not in fact change the default behavior as claimed in the commit message. It only breaks "-af-adv force=0", which was already pretty much useless though.
| * Add missing license headers to all files in the libmpcodecs directory.diego2010-01-301-0/+18
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30463 b3059339-0415-0410-9bf9-f77b7e298cf2
* | vd_ffmpeg: fix compilation with neither VDPAU nor XvMC enabledUoti Urpala2010-01-211-2/+0
| | | | | | | | | | | | | | | | | | The get_format() function was defined under #if CONFIG_XVMC || CONFIG_VDPAU but recent commit ca217f4557c3cff4f2bf33e605ce13e662e84a92 added an unconditional reference to it, causing linking to fail with an undefined reference if neither feature was enabled. Fix by removing the #if, there's no reason reason why it would be needed.
* | vd_ffmpeg: FFmpeg-mt changed has_b_frames API, updateUoti Urpala2010-01-201-1/+2
| |
* | vd_ffmpeg: move redundant info messages to MSGL_V levelUoti Urpala2010-01-201-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | Move two messages printed when using VDPAU/XvMC to MSGL_V level: "[VD_FFMPEG] XVMC-accelerated MPEG-2.\n" "[VD_FFMPEG] Trying pixfmt=%d.\n" The first is redundant because this info is normally visible from the decoder name, and it was also incorrectly printed in the VDPAU case too. Add a different MSGL_V message for VDPAU. Also make all these messages not translatable.
* |