1
mirror of https://github.com/mpv-player/mpv synced 2024-11-18 21:16:10 +01:00
mpv/player
wm4 1b1771f2a7 video: support filtering hardware frames via libavfilter
Requires a bunch of hacks:
- we access AVFilterLink.hw_frames_ctx. This is not a public API in
  FFmpeg and Libav. Newer FFmpeg provides an accessor
  (av_buffersink_get_hw_frames_ctx), but it's not available in Libav or
  the current FFmpeg release or Libav. We need this value after filter
  graph creation, so We have no choice but to access this.
  One alternative is making filter creation and format negotiation
  fully lazy (i.e. delay it and do it as filters are output), but this
  would be a huge change.
  So for now, we knowingly violate FFmpeg's and Libav's ABI and API
  constraints because they don't provide anything better.
  On newer FFmpeg, we use the (quite ugly) accessor, though.
- mp_image_params doesn't (and can't) have a field for the frames
  context AVBufferRef. So we pass it via vf_set_proto_frame(), and even
  more hacks.
- if a filter needs a hw context, but we haven't created one yet
  (because normally we create them lazily), it will fail at init.
- we allow any hw format now, although this could go horrible wrong.

Why all this effort? We could move hw deinterlacing filters etc. to
FFmpeg, which is a very worthy goal.
2017-01-16 16:10:39 +01:00
..
lua lua: allow unregistration of idle handlers 2017-01-15 17:02:21 +01:00
audio.c audio: stop being dumb 2017-01-08 14:47:53 +01:00
client.c scripting: minor logging improvements 2017-01-14 17:13:50 +01:00
client.h client API: turn mpv_suspend() and mpv_resume() into stubs 2016-11-22 15:54:44 +01:00
command.c command: remove worthless error handling code 2017-01-09 13:39:38 +01:00
command.h options: slightly better option update mechanism 2016-09-19 19:51:26 +02:00
configfiles.c player: fix previous commit 2016-10-03 17:16:02 +02:00
core.h scripting: minor logging improvements 2017-01-14 17:13:50 +01:00
external_files.c ta: remove old and redundant macro 2016-05-17 10:53:14 +02:00
external_files.h player: rename and move find_subfiles.c 2015-09-20 18:05:06 +02:00
lavfi.c lavfi: shut up false positive compiler warnings 2016-04-26 19:38:51 +02:00
lavfi.h player: add complex filter graph support 2016-02-05 23:19:56 +01:00
loadfile.c player: remove dysfunctional edition switching OSD code 2017-01-05 00:07:28 +01:00
lua.c scripting: minor logging improvements 2017-01-14 17:13:50 +01:00
main.c Update copyright year 2017-01-01 19:09:05 +01:00
misc.c player: litter code with explicit wakeup calls 2016-09-16 14:39:45 +02:00
osd.c player: remove dysfunctional edition switching OSD code 2017-01-05 00:07:28 +01:00
playloop.c client API: turn mpv_suspend() and mpv_resume() into stubs 2016-11-22 15:54:44 +01:00
screenshot.c cuda: use libavutil functions for copying hw surfaces to memory 2017-01-12 13:59:35 +01:00
screenshot.h Relicense some non-MPlayer source files to LGPL 2.1 or later 2016-01-19 18:36:06 +01:00
scripting.c scripting: don't call dlclose() on C plugins 2017-01-14 17:14:30 +01:00
sub.c player: enable no-video subtitle display on coverart too 2016-10-31 13:55:32 +01:00
video.c video: support filtering hardware frames via libavfilter 2017-01-16 16:10:39 +01:00