{"push_id":2480414932,"size":22,"distinct_size":22,"ref":"refs/heads/audio-format-shit","head":"cf538d6b846b177c63b76f32bb809cf8d513507d","before":"9307d1a4a1e827189c9f7273a9f0ce2422302a95","commits":[{"sha":"9eadc068fa13b8d83ad049e83960883d06d3c125","author":{"name":"Avi Halachmi (:avih)","email":"97169866e2be3cd67f9572774e4ee14e3e99838a@yahoo.com"},"message":"config: replace config dir lua-settings/ with dir script-opts/\n\nlua-settings/ is still supported, with deprecation warning.","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/9eadc068fa13b8d83ad049e83960883d06d3c125"},{"sha":"b04f0cad43eb627fb4e970367062329e3331d9fe","author":{"name":"Avi Halachmi (:avih)","email":"97169866e2be3cd67f9572774e4ee14e3e99838a@yahoo.com"},"message":"js: implement mp.options.read_options","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/b04f0cad43eb627fb4e970367062329e3331d9fe"},{"sha":"9a47023c444df488ff51c8f86fbd1b1b93e99a9b","author":{"name":"Avi Halachmi (:avih)","email":"97169866e2be3cd67f9572774e4ee14e3e99838a@yahoo.com"},"message":"js: implement mp.register_idle\n\nDue to earlier misinterpretation of the Lua docs as if mp.register_idle\nregisters a one-shot callback, the JS docs suggested to use setTimeout.\n\nBut the behavior and Lua docs are such that it's a repeating callback\nwhich fires just before the script thread goes to sleep.\n\nImplement it for JS too.","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/9a47023c444df488ff51c8f86fbd1b1b93e99a9b"},{"sha":"84aa9e71469f666c552aa9f797da16d3c9676f53","author":{"name":"Avi Halachmi (:avih)","email":"97169866e2be3cd67f9572774e4ee14e3e99838a@yahoo.com"},"message":"js: dump(..): fix incorrect <VISITED> with array argument\n\nWhen dump's argument is an array, it was displaying <VISITED> for all\nthe array's object elements (objects, arrays, etc), regardless if they're\nactually visited or not.\n\nThe reason is that we try to stringify twice: once normally which may\nthrow (on cycles), and a second time while excluding visited items which\nis indicated by binding the replacer to an empty array - in which we hold\nthe visited items, where the replacer tests if its 'this' is an array or\nnot and acts accordingly.\n\nHowever, its \"this\" may also be an array even if we don't bind it to one,\nbecause its \"normal\" this is the main stringified object, so the test of\nArray.isArray(this) is true when the top object is an array, and the object\nitems are indeed are in it - so the replacer considers them visited.\n\nFix by binding to null on the first attempt such that \"this\" is an array\nonly when we want it to test for visited items and not when the argument\nitself is an array.","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/84aa9e71469f666c552aa9f797da16d3c9676f53"},{"sha":"ec625266c8f2b2c06355f31b5d58ec030bbc8e5d","author":{"name":"Avi Halachmi (:avih)","email":"97169866e2be3cd67f9572774e4ee14e3e99838a@yahoo.com"},"message":"js: use new hooks API (match f60826c3)","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/ec625266c8f2b2c06355f31b5d58ec030bbc8e5d"},{"sha":"576dabf654702724a84e957e8ecf45678b5f83ed","author":{"name":"Kevin Mitchell","email":"55311ff0f9278de935970832916cdff1dd96b121@gmail.com"},"message":"manpage: move cuda-decode-device with hwdec options","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/576dabf654702724a84e957e8ecf45678b5f83ed"},{"sha":"cacb0ad3dc40c89db51d2233f01acf12a66eba55","author":{"name":"Kevin Mitchell","email":"55311ff0f9278de935970832916cdff1dd96b121@gmail.com"},"message":"manpage: document vaapi-device\n\nThis was left out of e3e2c79 by mistake.","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/cacb0ad3dc40c89db51d2233f01acf12a66eba55"},{"sha":"c33faee6bac27102cd04897ceec9ab040473d9ba","author":{"name":"Jan Ekström","email":"478b1a3d63ee9448165406906f0065748cc105f8@gmail.com"},"message":"demux_mkv: add V_AV1 identifier for AV1\n\nQuickly tested by a person who had FFmpeg linked with libaom.\nSeems as simple as the VP9 mappings, where there is no extradata/\ninitialization data off-band, and just stuff in the packets\nthemselves.\n\nDo note that the AV1 video format itself at this point is still\nnot frozen, so what you might produce one day might not be\ndecodable the following day.","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/c33faee6bac27102cd04897ceec9ab040473d9ba"},{"sha":"36161f0456353990f82e08989e92131191fcd2e2","author":{"name":"sergey.dobrodey","email":"f705ad335f0ce93a5d49b0fe1b620576e26534db@synesis.ru"},"message":"demux_lavf: skip demuxer hack iteration if hacks are disabled","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/36161f0456353990f82e08989e92131191fcd2e2"},{"sha":"9efb0278e7cdb851fc6696e94e8f7baa9b95235a","author":{"name":"Aman Gupta","email":"8ad73f92d9f9d8ffbb8fcc019cab870008ac555c@tmm1.net"},"message":"opengl: include details in EGL context errors","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/9efb0278e7cdb851fc6696e94e8f7baa9b95235a"},{"sha":"654d5c1cd4d9aa61df8fcd245aaecaad8dbfc1fa","author":{"name":"wm4","email":"af2b84f09c8719e0f2b649c9464c0e4e09337b2e@nowhere"},"message":"ao_alsa: add options for controlling period/buffer size","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/654d5c1cd4d9aa61df8fcd245aaecaad8dbfc1fa"},{"sha":"44e69d5332aa1c5687512f38c8b203f5164a26f3","author":{"name":"wm4","email":"af2b84f09c8719e0f2b649c9464c0e4e09337b2e@nowhere"},"message":"ao_alsa: reduce requested buffer size\n\nThere is a dedicated thread for feeding audio to the ALSA API from a\nbuffer with a larger size. There is little reason to have such a large\ndevice buffer.","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/44e69d5332aa1c5687512f38c8b203f5164a26f3"},{"sha":"3313cb061bd4acd94b1c4b342a3d7587be02a322","author":{"name":"wm4","email":"af2b84f09c8719e0f2b649c9464c0e4e09337b2e@nowhere"},"message":"ao_pulse: reduce requested device buffer size\n\nSame deal as with the previous commit for ALSA.\n\nUntested.","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/3313cb061bd4acd94b1c4b342a3d7587be02a322"},{"sha":"47dc3d14877ff718685e0b293178a95aef214a5d","author":{"name":"wm4","email":"af2b84f09c8719e0f2b649c9464c0e4e09337b2e@nowhere"},"message":"f_autoconvert: be less clever about running specific codepaths\n\nThis tried to avoid running the audio/video functions depending on\nwhether any of the audio or video related format restrictions were\ncalled (so the filter would show an error if a mismatching media type\nwas passed in). It was a shit idea anyway, so fuck it.","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/47dc3d14877ff718685e0b293178a95aef214a5d"},{"sha":"f2419a3b491df7737f032e036c4f9e21ac95b76d","author":{"name":"wm4","email":"af2b84f09c8719e0f2b649c9464c0e4e09337b2e@nowhere"},"message":"audio: change format negotiation, remove channel remix fudging\n\nThe audio format neogitation code was pretty complicated, although the\nidea was simple: when the format changes (or on the first audio frame),\nfilter only the new frame through the entire filter chain, discard the\nresulting frame, but use the format to initialize the AO.\n\nThis was useful for \"fudging\" the channel remix behavior (upmix or\ndownmix), and moving it before other filters. Apparently this was useful\nfor things like DRC filters, which might work better in stereo, and\nwhich also can only achieve the desired volume levels by doing it before\na downmix, which would modify the volume. This mechanism was introduced\nin commit 60048b7eb957b (which the commit message also describes as\n\"idiotic heuristic\"). Knowing the output format is inherently necessary\nfor this, because otherwise we can't know what the hell the user defined\nfilters will do.\n\nThere were problems with robustness. Some filters needed more than one\nframe. Resampling in particular would discard initial audio at high\nresampling ratios. Some filters might drop audio intentionally (like\nclipping data on timestamp ranges). There were also allegations that\nsome decoders output 0 length frames (although that is invalid in\nlibavcodec). The state machine was excessively complex and hard to\nunderstand too.\n\nThere are 3 things that could have been done:\n\n1. Fix robustness problems by doing more heuristics, like repeating\n   audio frames or simply decoding several frames. Since filters can\n   behave differently, this would have added lots of complexity.\n2. Make use of libavfilter's format negotiation, and add the same to\n   mpv builtin filters. This is sort of annoying, because the format\n   negotiation in libavfilter changes the state of the filters. It also\n   reports only some parameters (mostly all for audio, but a lot of\n   holes for video). It would remove some of the state machine, but not\n   all.\n3. Drop the channel remix fudging, and do the same as the video chain.\n   This would not require format negotiation, but instead you can just\n   filter the audio frames, and look what comes out of it. If nothing\n   comes out, simply never create an AO.\n\nThis commit selects option 3. It removes the remix fudging, which means\nthe loss of a feature. Users can instead add \"--af=format=channels=2\"\nbefore their DRC filter, or something. I'm also considering changing the\ndefault for --audio-channels back to stereo, and downmix in the decoder\nor at the start of the filter chain, which would give the same results,\nexcept requiring more configuration.\n\nImplementation-wise, this is still a bit different from the video path.\nThe VO always remains the same instance, while the AO might have to be\nrecreated on configuration changes. This still requires explicit format\nchange handling + draining old data, but by putting it into\nf_autoconvert, not much new code is needed.","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/f2419a3b491df7737f032e036c4f9e21ac95b76d"},{"sha":"c8f2c9d9385735ec262b2ad17fc916a969aa36a3","author":{"name":"wm4","email":"af2b84f09c8719e0f2b649c9464c0e4e09337b2e@nowhere"},"message":"f_output_chain: fix typo","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/c8f2c9d9385735ec262b2ad17fc916a969aa36a3"},{"sha":"5593898920764547fd0c2489de9199f9e90b1345","author":{"name":"wm4","email":"af2b84f09c8719e0f2b649c9464c0e4e09337b2e@nowhere"},"message":"ao_alsa: actually report underruns to user\n\nPrint them as a warning.\n\nNote that there may be some cases where it underruns, without being a\nbad condition. This could possibly happen e.g. if the last chunk is\nwritten, and then it resumes playback some time after that. Eventually I\nwant to add more code to avoid such spurious warnings.","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/5593898920764547fd0c2489de9199f9e90b1345"},{"sha":"a964d68a1a15277bed9d2fa73c813a1aad72835c","author":{"name":"wm4","email":"af2b84f09c8719e0f2b649c9464c0e4e09337b2e@nowhere"},"message":"audio: don't recreate AO if a filter changes the output format\n\nUntil recently, the AO was reinitialized strictly only on decoder format\nchanges. But the commit for simplifying audio format negotiation removed\nthis. Now the AO is recreated for any format change.\n\nThis is sort of annoying if you change playback speed. The\ninsertion/removal of af_scaletempo can change the sample format. For\nexample, the acompressor filter will convert output to double, so\ntoggling scaletempo will force the format back to float. This recreates\nthe AO under the --gapless-audio=weak default. This likely affects a lot\nof other filters too.\n\nWork this around by allowing sample format changes, and keeping the\ncurrent AO format in these cases. This is probably not a big problem.\nMost audio APIs force the output format to float anyway.\n\nThis means you actually have to worry about what the default gapless\nmode does to your audio. If you start with a file that uses 8 bit per\nsample, and then continue playing a 24 bit FLAC, it will be converted\ndown to 8 bit per sample. (Assuming they are played in a way that uses\nthe gapless logic.)","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/a964d68a1a15277bed9d2fa73c813a1aad72835c"},{"sha":"63dc6a5b8a92bb35b3c73ae6ad63a4c0ebaa3f93","author":{"name":"wm4","email":"af2b84f09c8719e0f2b649c9464c0e4e09337b2e@nowhere"},"message":"audio: do not try to resample spdif data\n\nNormally we don't even try this, but in corner cases it can happen. For\nexample when inserting lavcac3enc at runtime, and display-sync-resample\nwas active.","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/63dc6a5b8a92bb35b3c73ae6ad63a4c0ebaa3f93"},{"sha":"899572532867d980bb14aa6f524e971faabfc9cf","author":{"name":"wm4","email":"af2b84f09c8719e0f2b649c9464c0e4e09337b2e@nowhere"},"message":"DOCS/interface-changes.rst: adjust some audio filter change notes\n\nThe first change is about spdif - I mostly ignore spdif issues these\ndays, but it seems like the recent changes made handling of it slightly\nbetter (but I didn't really test).\n\nThe second change is about broken libavfilter filters. We won't restore\nthe old behavior, because people were complaining about the old behavior\nin the past. Possibly we could make libavfilter export this was metadata\nand use the old behavior if we know they're broken - but it doesn't\nexist yet.","distinct":true,"url":"https://api.github.com/repos/wm4/mpv/commits/899572532867d980bb14aa6f524e971faabfc9cf"}]}
{"actor":{"display_login":"wm4"}}