summaryrefslogtreecommitdiffstats
path: root/common/encode_lavc.h
Commit message (Collapse)AuthorAgeFilesLines
* ALL: use new mp_thread abstractionKacper Michajłow2023-11-051-2/+2
|
* options: remove a few options marked with .deprecation_messageDudemanguy2023-09-211-2/+0
| | | | | | | | | | | A bit different from the OPT_REPLACED/OPT_REMOVED ones in that the options still possibly do something but they have a deprecation message. Most of these are old and have no real usage. The only potentially controversial ones are the removal of --oaffset and --ovoffset which were deprecated years ago and seemingly have no real replacement. There's a cryptic message about --audio-delay but who knows. The less encoding mode code we have, the better so just chuck it.
* encode_lavc: replace deprecated av_init_packet()sfan52022-01-101-0/+2
|
* build: address AVCodec, AVInputFormat, AVOutputFormat const warningssfan52021-05-011-2/+2
| | | | FFmpeg recently changed these to be const on their side.
* audio: refactor how data is passed to AOwm42020-08-291-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This replaces the two buffers (ao_chain.ao_buffer in the core, and buffer_state.buffers in the AO) with a single queue. Instead of having a byte based buffer, the queue is simply a list of audio frames, as output by the decoder. This should make dataflow simpler and reduce copying. It also attempts to simplify fill_audio_out_buffers(), the function I always hated most, because it's full of subtle and buggy logic. Unfortunately, I got assaulted by corner cases, dumb features (attempt at seamless looping, really?), and other crap, so it got pretty complicated again. fill_audio_out_buffers() is still full of subtle and buggy logic. Maybe it got worse. On the other hand, maybe there really is some progress. Who knows. Originally, the data flow parts was meant to be in f_output_chain, but due to tricky interactions with the playloop code, it's now in the dummy filter in audio.c. At least this improves the way the audio PTS is passed to the encoder in encoding mode. Now it attempts to pass frames directly, along with the pts, which should minimize timestamp problems. But to be honest, encoder mode is one big kludge that shouldn't exist in this way. This commit should be considered pre-alpha code. There are lots of bugs still hiding.
* encode: restore audio muxer timebase usewm42020-03-221-0/+4
| | | | | | Seems to crash hard if an error happens somewhere at init. Who cares. Part of #7524.
* encode: get rid of the output packet queuewm42018-05-031-1/+6
| | | | | | | | | | | | Until recently, ao_lavc and vo_lavc started encoding whenever the core happened to send them data. Since audio and video are not initialized at the same time, and the muxer was not necessarily opened when the first encoder started to produce data, the resulting packets were put into a queue. As soon as the muxer was opened, the queue was flushed. Change this to make the core wait with sending data until all encoders are initialized. This has the advantage that we don't need to queue up the packets.
* encode: rewrite half of itwm42018-04-291-54/+51
| | | | | | | | | | | | | The main change is that we wait with opening the muxer ("writing headers") until we have data from all streams. This fixes race conditions at init due to broken assumptions in the old code. This also changes a lot of other stuff. I found and fixed a few API violations (often things for which better mechanisms were invented, and the old ones are not valid anymore). I try to get away from the public mutex and shared fields in encode_lavc_context. For now it's still needed for some timestamp-related fields, but most are gone. It also removes some bad code duplication between audio and video paths.
* encode: some more cleanupswm42018-04-291-2/+0
|
* encode: simplify colorspace settingwm42018-04-201-5/+0
| | | | | This was also refactored at some point, and is now unnecessarily roundabout.
* encode: remove some unused functionswm42018-04-201-4/+0
|
* encode_lavc: move from GPL 2+ to LGPL 2.1+.Rudolf Polzer2017-06-131-7/+8
|
* encode_lavc: Migrate to codecpar API.Rudolf Polzer2016-04-111-11/+22
|
* Update license headersMarcin Kurczewski2015-04-131-4/+3
| | | | Signed-off-by: wm4 <wm4@nowhere>
* encode: make option struct localwm42014-06-111-1/+1
| | | | Similar to previous commits.
* encode_lavc: copy metadata to output fileAlessandro Ghedini2014-03-301-0/+1
| | | | | | | | Closes #684 Signed-off-by: wm4 <wm4@nowhere> Includes some minor cosmetic changes additional to the original PR.
* encode: add lockingwm42014-03-091-0/+7
| | | | | | | | | | Since the AO will run in a thread, and there's lots of shared state with encoding, we have to add locking. One case this doesn't handle correctly are the encode_lavc_available() calls in ao_lavc.c and vo_lavc.c. They don't do much (and usually only to protect against doing --ao=lavc with normal playback), and changing it would be a bit messy. So just leave them.
* encode: don't access ao->ptswm42014-03-071-0/+3
| | | | | | | | | | This field will be moved out of the ao struct. The encoding code was basically using an invalid way of accessing this field. Since the AO will be moved into its own thread too and will do its own buffering, the AO and the playback core might not even agree which sample a PTS timestamp belongs to. Add some extrapolation code to handle this case.
* encode_lavc: mp_msg conversionswm42013-12-211-0/+2
| | | | Miss two mp_msg calls, because these conflict with future commits.
* Split mpvcore/ into common/, misc/, bstr/wm42013-12-171-0/+101