Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/videolan/dav1d.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-07-06Eliminate unused C DSP functions at compile timeHenrik Gramner
When compiling with asm enabled there's no point in compiling C versions of DSP functions that have asm implementations using instruction sets that the compiler can unconditionally use. E.g. when compiling with -mssse3 we can remove the C version of all functions with SSSE3 implementations. This is accomplished using the compiler's dead code elimination functionality. Can be configured using the new 'trim_dsp' meson option, which by default is enabled when compiling in release mode.
2022-07-06cpu: Inline dav1d_get_cpu_flags()Henrik Gramner
2022-06-22x86: Add minor loopfilter asm improvementsHenrik Gramner
2022-06-21checkasm: Speed up signal handlingHenrik Gramner
Enabling/disabling signal handlers is very slow and requires a syscall. A better approach is to keep the signal handlers enabled all the time, and use a simple flag variable to determine if a given signal should be handled or passed on to the default signal handler.
2022-06-21checkasm: Improve seed generation on WindowsHenrik Gramner
GetTickCount() increases at a very low frequency, >10ms per tick. When running multiple loops of checkasm instances in parallel different instances regularly ends up using identical seeds. Prefer the use of QueryPerformanceCounter() instead, which ticks at a significantly higher rate, which in turn increases randomness.
2022-06-20ci: Don't specify a specific MacOS versionHenrik Gramner
2022-06-15x86: Add high bit-depth loopfilter AVX-512 (Ice Lake) asmHenrik Gramner
2022-06-13checkasm/lpf: Use operating dimensionsVictorien Le Couviour--Tuffet
Fixes use of uninitialized value.
2022-06-03checkasm: Print the cpu model and cpuid signature on x86Henrik Gramner
2022-06-03checkasm: Add a vzeroupper check on x86Henrik Gramner
Verifying that the YMM state is clean when returning from assembly functions helps catching potential issues with AVX/SSE transitions.
2022-06-03x86: Add a workaround for quirky AVX-512 hardware behaviorHenrik Gramner
On Intel CPUs certain AVX-512 shuffle instructions incorrectly flag the upper halves of YMM registers as in use when writing to XMM registers, which may cause AVX/SSE state transitions. This behavior is not documented and only occurs on physical hardware, not when using the Intel SDE, so as far as I can tell it appears to be a hardware bug. Work around the issue by using EVEX-only registers. This avoids the problem at the cost of a slightly larger code size.
2022-05-31checkasm: Fix uninitialized variableVictorien Le Couviour--Tuffet
fg_data->num_y_points is used in generate_grain_uv, but is only set after the call: move the initialization above.
2022-05-25CI: Update coverage collectingMatthias Dressel
artifacts:reports:cobertura was deprecated in GitLab 14.9
2022-05-25CI: Add a build with the minimum requirementsMatthias Dressel
* meson 0.49.0 * nasm 2.14
2022-05-25CI: Deactivate git 'safe.directory'Matthias Dressel
An attacker already has arbitrary code execution inside the container. Ref: CVE-2022-24765
2022-05-25CI: Update imagesMatthias Dressel
2022-05-25Fix typoVictorien Le Couviour--Tuffet
Insert missing space.
2022-05-25x86: Add high bit-depth cdef_filter AVX-512 (Ice Lake) asmHenrik Gramner
2022-05-20checkasm: Print --help message to stderr instead of stdoutHenrik Gramner
2022-05-20checkasm: Split cdef test into separate pri/sec/pri+sec partsHenrik Gramner
Makes it possible to benchmark the different code paths individually.
2022-05-20checkasm: Improve benchmarking of functions that modify their inputHenrik Gramner
Alternate between buffers when benchmarking in order to more accurately measure throughout instead of latency.
2022-05-18x86/itx_avx2: fix typoDavid Michael Barr
2022-05-07CI: Add gcc12 and clang14 builds with mold linkerMatthias Dressel
2022-05-06CI: Trigger documentation rebuild if configuration changesMatthias Dressel
Additionally, switch from 'only'/'except' to 'rules' which is more flexible.
2022-05-06meson/doc: Fix doxygen configMatthias Dressel
* Doxygen had a longstanding bug [0] where it would use `dot` even if not configured to do so. Due to this behaviour our config magically worked. This bug is fixed in 1.9.2 therefore we need to explicitly enable `dot` support in order to keep existing functionality. * Enables WARN_AS_ERROR to catch mistakes. * Adds a version string to the header to easily identify which commit the docs are built from. [0] https://github.com/doxygen/doxygen/issues/7273
2022-04-28Use a relaxed memory ordering in dav1d_ref_inc()Henrik Gramner
Increasing a reference counter only requires atomicity, but not ordering or synchronization.
2022-04-28Remove redundant code in dav1d_cdf_thread_unref()Henrik Gramner
Checking if the Dav1dRef pointer is non-zero and zeroing it is already performed in dav1d_ref_dec(), no need to do it twice. Also reorder code to enable tail call elimination.
2022-04-28Inline dav1d_ref_inc()Henrik Gramner
Avoids the function call overhead in non-LTO builds. Also reorder code in dav1d_ref_dec() to enable tail call elimination.
2022-04-24x86/itx: Add 32x8 12bpc AVX2 transformsMatthias Dressel
inv_txfm_add_32x8_dct_dct_0_12bpc_c: 286.7 inv_txfm_add_32x8_dct_dct_0_12bpc_avx2: 20.1 inv_txfm_add_32x8_dct_dct_1_12bpc_c: 7832.7 inv_txfm_add_32x8_dct_dct_1_12bpc_avx2: 710.6 inv_txfm_add_32x8_dct_dct_2_12bpc_c: 7838.1 inv_txfm_add_32x8_dct_dct_2_12bpc_avx2: 711.6 inv_txfm_add_32x8_dct_dct_3_12bpc_c: 7818.3 inv_txfm_add_32x8_dct_dct_3_12bpc_avx2: 710.9 inv_txfm_add_32x8_dct_dct_4_12bpc_c: 7820.6 inv_txfm_add_32x8_dct_dct_4_12bpc_avx2: 710.5 inv_txfm_add_32x8_identity_identity_0_12bpc_c: 1526.6 inv_txfm_add_32x8_identity_identity_0_12bpc_avx2: 19.3 inv_txfm_add_32x8_identity_identity_1_12bpc_c: 1519.4 inv_txfm_add_32x8_identity_identity_1_12bpc_avx2: 19.9 inv_txfm_add_32x8_identity_identity_2_12bpc_c: 1519.9 inv_txfm_add_32x8_identity_identity_2_12bpc_avx2: 43.6 inv_txfm_add_32x8_identity_identity_3_12bpc_c: 1519.4 inv_txfm_add_32x8_identity_identity_3_12bpc_avx2: 67.8 inv_txfm_add_32x8_identity_identity_4_12bpc_c: 1523.2 inv_txfm_add_32x8_identity_identity_4_12bpc_avx2: 91.6
2022-04-24x86/itx: Add 8x32 12bpc AVX2 transformsMatthias Dressel
inv_txfm_add_8x32_dct_dct_0_12bpc_c: 334.6 inv_txfm_add_8x32_dct_dct_0_12bpc_avx2: 66.0 inv_txfm_add_8x32_dct_dct_1_12bpc_c: 7929.7 inv_txfm_add_8x32_dct_dct_1_12bpc_avx2: 489.3 inv_txfm_add_8x32_dct_dct_2_12bpc_c: 7925.8 inv_txfm_add_8x32_dct_dct_2_12bpc_avx2: 547.1 inv_txfm_add_8x32_dct_dct_3_12bpc_c: 7928.9 inv_txfm_add_8x32_dct_dct_3_12bpc_avx2: 647.8 inv_txfm_add_8x32_dct_dct_4_12bpc_c: 7916.1 inv_txfm_add_8x32_dct_dct_4_12bpc_avx2: 701.0 inv_txfm_add_8x32_identity_identity_0_12bpc_c: 2413.1 inv_txfm_add_8x32_identity_identity_0_12bpc_avx2: 28.6 inv_txfm_add_8x32_identity_identity_1_12bpc_c: 2415.2 inv_txfm_add_8x32_identity_identity_1_12bpc_avx2: 28.6 inv_txfm_add_8x32_identity_identity_2_12bpc_c: 2413.7 inv_txfm_add_8x32_identity_identity_2_12bpc_avx2: 55.1 inv_txfm_add_8x32_identity_identity_3_12bpc_c: 2415.4 inv_txfm_add_8x32_identity_identity_3_12bpc_avx2: 85.3 inv_txfm_add_8x32_identity_identity_4_12bpc_c: 2401.8 inv_txfm_add_8x32_identity_identity_4_12bpc_avx2: 116.8
2022-04-24x86/itx: Deduplicate dconly codeMatthias Dressel
2022-04-24lib: Fix typo in documentationMatthias Dressel
2022-04-08obu: don't output invisible but showable key frames more than onceJames Almer
From section 6.8.2 in the AV1 spec: "It is a requirement of bitstream conformance that when show_existing_frame is used to show a previous frame with RefFrameType[ frame_to_show_map_idx ] equal to KEY_FRAME, that the frame is output via the show_existing_frame mechanism at most once."
2022-04-08obu: check that the frame referenced by existing_frame_idx is showableJames Almer
From section 6.8.2 in the AV1 spec: "It is a requirement of bitstream conformance that when show_existing_frame is used to show a previous frame, that the value of showable_frame for the previous frame was equal to 1."
2022-04-08obu: check refresh_frame_flags is not equal to allFrames on Intra Only framesJames Almer
From section 6.8.2 in the AV1 spec: "If frame_type is equal to INTRA_ONLY_FRAME, it is a requirement of bitstream conformance that refresh_frame_flags is not equal to 0xff." Make this a soft requirement by checking that strict standard complaince is enabled.
2022-04-08remove multipass wait from dav1d_decode_frameSteve Lhomme
There's an assert on n_fc == 1 at the beginning of the function. There cannot be a second pass used here. Signed-off-by: Steve Lhomme <robux4@videolabs.io>
2022-04-07picture: ensure the new seq header and op param info flags are attached to ↵James Almer
the next visible picture in display order If the first picture in coding order after a new sequence header is parsed is not visible, the first picture output by dav1d after the fact (which is coded after the aforementioned invisible picture) would not trigger the new seq header event flag as expected, despite being the first containing a reference to a new sequence header. Assuming the invisible picture is ever output, the result of this change will be two pictures signaling a new sequence header was seen despite there being only one new sequence header.
2022-03-31lib: add a function to query the decoder frame delayJames Almer
2022-03-31lib: split calculating thread count to its own functionJames Almer
2022-03-19checkasm: Fix alignment of stack buffers in the film grain testsHenrik Gramner
2022-03-181.0.01.0.0Jean-Baptiste Kempf
2022-03-16Set f->n_tile_data to 0 in dav1d_decode_frame()Wan-Teh Chang
Set f->n_tile_data to 0 after the dav1d_decode_frame_exit() call in dav1d_decode_frame(). dav1d_decode_frame_exit() unrefs every element in use in the f->tile array, so it is good to set f->n_tile_data to 0 to indicate that no elements are in use. We are already doing this after all other dav1d_decode_frame_exit() calls. NOTE: It is tempting to have dav1d_decode_frame_exit() itself set f->n_tile_data to 0. I did not do that in this merge request, because the following is a common pattern: dav1d_decode_frame_exit(f, error); f->n_tile_data = 0; pthread_cond_signal(&f->task_thread.cond); corresponding to the waiting code: while (f->n_tile_data > 0) pthread_cond_wait(&f->task_thread.cond, &c->task_thread.lock); I wonder if f->n_tile_data is set to 0 outside dav1d_decode_frame_exit() to make clear the association of f->n_tile_data with the condition variable f->task_thread.cond.
2022-03-15NEWSJean-Baptiste Kempf
2022-03-14x86: Reduce code size in 8-bit film grain AVX-512 asmHenrik Gramner
Split out common parts into separate functions. This reduces the overall binary size by more than 5 KiB.
2022-03-14x86: Add high bit-depth film grain AVX-512 (Ice Lake) asmHenrik Gramner
2022-03-10arm: Only produce the PAC/BTI .note section when targeting ELFMartin Storsjö
This avoids build errors if such features are enabled while targeting another binary format. (Using such features on other platforms might require some other form of signaling/setup though, but the ELF specific .note section isn't applicable at least.)
2022-03-10arm: Add comments to #endif and #else in nonobvious casesMartin Storsjö
2022-03-09lib.c: re-order so all code accessing f->* is grouped togetherRonald S. Bultje
2022-03-08lib: add a public function to return the props from the last frame that ↵James Almer
failed to decode
2022-03-08data: add a public function to release a Dav1dDataProps referenceJames Almer