Skip to content
Snippets Groups Projects
  1. Feb 03, 2025
  2. Feb 02, 2025
    • Fatih Uzunoğlu's avatar
      qml: do not let qt to create implicit layer in artist top banner · b19ddcc9
      Fatih Uzunoğlu authored and Steve Lhomme's avatar Steve Lhomme committed
      Here, Qt wants to create a layer because when source is `QQuickImage`,
      `QGfxSourceProxy(ME)` checks its fill mode and source size.
      
      In this case, we need to tell Qt that we don't need a layer here, as
      we are doing the mapping as we want but Qt currently does not offer
      a way to tell that and simply tries to decide itself: "If needed,
      MultiEffect will internally generate a ShaderEffectSource as the
      texture source"
      
      Using the static texture for the blur source has also the advantage
      of applying blur only once because the source would not get updated
      constantly due to size change. With clipping, we can simply adjust
      the viewport without needing to update the blur.
      
      Unfortunately we can not do this with older Qt versions, because if
      the source image changes fill mode from stretch or to stretch where
      it is fed to a blur effect, the effect either causes crash (layering
      needed to not needed, so Tile -> Stretch) or does not work (layering
      not needed to needed, so Stretch -> Tile).
      b19ddcc9
    • Steve Lhomme's avatar
  3. Feb 01, 2025
    • Thomas Guillem's avatar
      contrib: update libsmb2 to 6.1 and use cmake · 37f6a0fa
      Thomas Guillem authored and Steve Lhomme's avatar Steve Lhomme committed
      Switch to cmake from this commit since the previous smb2 version has not a
      fully functional cmake configuration.
      37f6a0fa
    • Thomas Guillem's avatar
      smb2: update latest net share API · 8c8c28be
      Thomas Guillem authored and Steve Lhomme's avatar Steve Lhomme committed
      8c8c28be
    • Thomas Guillem's avatar
      smb2: rework ShareEnum · 94db6cdc
      Thomas Guillem authored and Steve Lhomme's avatar Steve Lhomme committed
      To prepare for the next commit.
      94db6cdc
    • Thomas Guillem's avatar
      smb2: prefix local functions with vlc_ · 9adc93c1
      Thomas Guillem authored and Steve Lhomme's avatar Steve Lhomme committed
      To avoid conflicts with smb2.h
      9adc93c1
    • Steve Lhomme's avatar
    • Steve Lhomme's avatar
      dxgi_swapchain: unify the isWin8OrGreater check · 41532b38
      Steve Lhomme authored
      Similar to ca1e1569.
      GetCurrentThreadStackLimits is also available in UWP.
      41532b38
    • Fatih Uzunoğlu's avatar
      qt: add missing disconnect in `VideoSurface` · 6e67d031
      Fatih Uzunoğlu authored and Steve Lhomme's avatar Steve Lhomme committed
      6e67d031
    • Steve Lhomme's avatar
      d3d11: remove empty d3d_shader_compiler_t structure · 65a54243
      Steve Lhomme authored
      We don't need to create an object just to load the DLL shaders.
      65a54243
    • Steve Lhomme's avatar
      d3d11: link directly with d3dcompiler.lib · 123c7fc5
      Steve Lhomme authored
      It redirects to the d3dcompiler_47.dll in mingw-w64 and in the Windows
      SDK that's the only variant there is. This is also how D3DCompile()
      is supposed to be used [^1].
      
      The DLL is available in Windows 7 with Platform Update [^2].
      No version of d3dcompiler_XXX.dll is available in vanilla Windows 7
      which doesn't have Direct3D11 anyway.
      
      [^1]: https://learn.microsoft.com/en-us/windows/win32/api/d3dcompiler/nf-d3dcompiler-d3dcompile
      [^2]: https://learn.microsoft.com/en-us/windows/win32/direct3darticles/platform-update-for-windows-7
      123c7fc5
    • Steve Lhomme's avatar
      qt: don't check private Qt core · b409e038
      Steve Lhomme authored
      We don't use it anymore.
      b409e038
    • Steve Lhomme's avatar
      qt: compositor_dcomp: avoid using a private header to call dcomp · 3d39b13a
      Steve Lhomme authored
      This is standard Windows API calls that we can call manually.
      3d39b13a
    • Thomas Guillem's avatar
      opengl: fix chroma check from UpdateFormat() · f32d2d32
      Thomas Guillem authored and Steve Lhomme's avatar Steve Lhomme committed
      The fmt passed to vlc_gl_interop_New() is const, the new changed chroma
      is in interop->fmt_in.
      
      This fixes crashes and assert after vd->ops->update_format() that
      required a chroma change.
      
      PS: if update_format() fails, a video converter will be inserted in the
      static filter chain.
      f32d2d32
    • Fatih Uzunoğlu's avatar
      qml: use reasonable source size for delegate images · 020b3c8b
      Fatih Uzunoğlu authored and Steve Lhomme's avatar Steve Lhomme committed
      Delegate images are meant to be cached, and put in the
      atlas. We have to use a reasonable size otherwise they
      can easily spoil the cache.
      
      Currently source size is used as worst case (the largest
      the image can be), but most of the time the interface
      window size is wide enough to display multiple items,
      where in that case item size is not as large as the
      worst case.
      
      Granted this will make images have poorer quality when
      the interface has such a size that only one/two items are
      visible per row, as then the items would scale up to use
      the all available width. However, it needs to be balanced.
      
      I propose using the average case and not the worst case
      for the source size. I propose that we determine the
      average (nbItemPerRow) to be 3 for the moment. This means
      that we target the optimal quality when there are at least
      three items displayed per row and not less.
      
      I used the formula provided in the comments, one line above.
      020b3c8b
    • Fatih Uzunoğlu's avatar
      qml: show the busy cursor also in grid mode in `PlaylistMediaList.qml` · 093cb463
      Fatih Uzunoğlu authored and Steve Lhomme's avatar Steve Lhomme committed
      093cb463
    • Fatih Uzunoğlu's avatar
      qml: fix promise `then()` never called in `PlaylistMediaList.qml` · a8424fd7
      Fatih Uzunoğlu authored and Steve Lhomme's avatar Steve Lhomme committed
      This causes the cursor to remain busy forever.
      a8424fd7
    • Fatih Uzunoğlu's avatar
      qml: prevent assigning intermediate value to source size in `MusicArtistDelegate.qml` · 32a0be32
      Fatih Uzunoğlu authored and Steve Lhomme's avatar Steve Lhomme committed
      Partially changing a value type changes the whole value. In
      image case, this means that the images can get re-loaded with
      indeterminate size just to discard them after the size is
      determined.
      
      Fortunately this does not happen currently, because the sizes
      are determined before the component is complete and QQuickImage
      only loads if the component is complete.
      
      However, due to the declarative nature of QML, bindings are
      evaluated and assigned one by one, this means that source size
      would be changed two times even if .width and .height are
      pending re-evaluation at the same time (such as both depend on
      DPR). At the same time, the order is also not defined, so
      with such a setup as following:
      
      sourceSize.width: width * eDPR
      sourceSize.height: height * eDPR
      
      When eDPR changes, Qt evaluates the binding for width or height,
      adjusts sourceSize, sourceSize changes and change signal is signalled,
      then evaluates the other sub-part of the value type (width or height),
      adjusts sourceSize, sourceSize changes again and change signal is
      signalled. Qt could technically optimize this, but as of Qt 6.8.1
      it is not the case.
      
      Meanwhile with the following:
      
      sourceSize: Qt.size(width * eDPR, height * eDPR)
      
      When eDPR changes, Qt evaluates the binding and adjusts the source
      size, sourceSize changes and change signal is signalled. Source size
      does not change two times, and the image would not be loaded two
      times.
      32a0be32
    • Fatih Uzunoğlu's avatar
      qml: prevent assigning intermediate value to source size in `MusicAlbumsGridExpandDelegate.qml` · 73066495
      Fatih Uzunoğlu authored and Steve Lhomme's avatar Steve Lhomme committed
      Partially changing a value type changes the whole value. In
      image case, this means that the images can get re-loaded with
      indeterminate size just to discard them after the size is
      determined.
      
      Fortunately this does not happen currently, because the sizes
      are determined before the component is complete and QQuickImage
      only loads if the component is complete.
      
      However, due to the declarative nature of QML, bindings are
      evaluated and assigned one by one, this means that source size
      would be changed two times even if .width and .height are
      pending re-evaluation at the same time (such as both depend on
      DPR). At the same time, the order is also not defined, so
      with such a setup as following:
      
      sourceSize.width: width * eDPR
      sourceSize.height: height * eDPR
      
      When eDPR changes, Qt evaluates the binding for width or height,
      adjusts sourceSize, sourceSize changes and change signal is signalled,
      then evaluates the other sub-part of the value type (width or height),
      adjusts sourceSize, sourceSize changes again and change signal is
      signalled. Qt could technically optimize this, but as of Qt 6.8.1
      it is not the case.
      
      Meanwhile with the following:
      
      sourceSize: Qt.size(width * eDPR, height * eDPR)
      
      When eDPR changes, Qt evaluates the binding and adjusts the source
      size, sourceSize changes and change signal is signalled. Source size
      does not change two times, and the image would not be loaded two
      times.
      73066495
    • Fatih Uzunoğlu's avatar
      qml: prevent assigning intermediate value to source size in `MediaCover.qml` · cec6daa9
      Fatih Uzunoğlu authored and Steve Lhomme's avatar Steve Lhomme committed
      Partially changing a value type changes the whole value. In
      image case, this means that the images can get re-loaded with
      indeterminate size just to discard them after the size is
      determined.
      
      Fortunately this does not happen currently, because the sizes
      are determined before the component is complete and QQuickImage
      only loads if the component is complete.
      
      However, due to the declarative nature of QML, bindings are
      evaluated and assigned one by one, this means that source size
      would be changed two times even if .width and .height are
      pending re-evaluation at the same time (such as both depend on
      DPR). At the same time, the order is also not defined, so
      with such a setup as following:
      
      sourceSize.width: width * eDPR
      sourceSize.height: height * eDPR
      
      When eDPR changes, Qt evaluates the binding for width or height,
      adjusts sourceSize, sourceSize changes and change signal is signalled,
      then evaluates the other sub-part of the value type (width or height),
      adjusts sourceSize, sourceSize changes again and change signal is
      signalled. Qt could technically optimize this, but as of Qt 6.8.1
      it is not the case.
      
      Meanwhile with the following:
      
      sourceSize: Qt.size(width * eDPR, height * eDPR)
      
      When eDPR changes, Qt evaluates the binding and adjusts the source
      size, sourceSize changes and change signal is signalled. Source size
      does not change two times, and the image would not be loaded two
      times.
      cec6daa9
    • Fatih Uzunoğlu's avatar
      qml: prevent assigning intermediate value to source size in `BannnerCone.qml` · 426d5085
      Fatih Uzunoğlu authored and Steve Lhomme's avatar Steve Lhomme committed
      Partially changing a value type changes the whole value. In
      image case, this means that the images can get re-loaded with
      indeterminate size just to discard them after the size is
      determined.
      
      Fortunately this does not happen currently, because the sizes
      are determined before the component is complete and QQuickImage
      only loads if the component is complete.
      
      However, due to the declarative nature of QML, bindings are
      evaluated and assigned one by one, this means that source size
      would be changed two times even if .width and .height are
      pending re-evaluation at the same time (such as both depend on
      DPR). At the same time, the order is also not defined, so
      with such a setup as following:
      
      sourceSize.width: width * eDPR
      sourceSize.height: height * eDPR
      
      When eDPR changes, Qt evaluates the binding for width or height,
      adjusts sourceSize, sourceSize changes and change signal is signalled,
      then evaluates the other sub-part of the value type (width or height),
      adjusts sourceSize, sourceSize changes again and change signal is
      signalled. Qt could technically optimize this, but as of Qt 6.8.1
      it is not the case.
      
      Meanwhile with the following:
      
      sourceSize: Qt.size(width * eDPR, height * eDPR)
      
      When eDPR changes, Qt evaluates the binding and adjusts the source
      size, sourceSize changes and change signal is signalled. Source size
      does not change two times, and the image would not be loaded two
      times.
      426d5085
    • Fatih Uzunoğlu's avatar
      qml: prevent assigning intermediate value to source size in `AtoBButton.qml` · 7adbf332
      Fatih Uzunoğlu authored and Steve Lhomme's avatar Steve Lhomme committed
      Partially changing a value type changes the whole value. In
      image case, this means that the images can get re-loaded with
      indeterminate size just to discard them after the size is
      determined.
      
      Fortunately this does not happen currently, because the sizes
      are determined before the component is complete and QQuickImage
      only loads if the component is complete.
      
      However, due to the declarative nature of QML, bindings are
      evaluated and assigned one by one, this means that source size
      would be changed two times even if .width and .height are
      pending re-evaluation at the same time (such as both depend on
      DPR). At the same time, the order is also not defined, so
      with such a setup as following:
      
      sourceSize.width: width * eDPR
      sourceSize.height: height * eDPR
      
      When eDPR changes, Qt evaluates the binding for width or height,
      adjusts sourceSize, sourceSize changes and change signal is signalled,
      then evaluates the other sub-part of the value type (width or height),
      adjusts sourceSize, sourceSize changes again and change signal is
      signalled. Qt could technically optimize this, but as of Qt 6.8.1
      it is not the case.
      
      Meanwhile with the following:
      
      sourceSize: Qt.size(width * eDPR, height * eDPR)
      
      When eDPR changes, Qt evaluates the binding and adjusts the source
      size, sourceSize changes and change signal is signalled. Source size
      does not change two times, and the image would not be loaded two
      times.
      7adbf332
    • Fatih Uzunoğlu's avatar
      qml: prevent assigning intermediate value to source size in `ArtistTopBanner.qml` · cf11d530
      Fatih Uzunoğlu authored and Steve Lhomme's avatar Steve Lhomme committed
      Partially changing a value type changes the whole value. In
      image case, this means that the images can get re-loaded with
      indeterminate size just to discard them after the size is
      determined.
      
      Fortunately this does not happen currently, because the sizes
      are determined before the component is complete and QQuickImage
      only loads if the component is complete.
      
      However, due to the declarative nature of QML, bindings are
      evaluated and assigned one by one, this means that source size
      would be changed two times even if .width and .height are
      pending re-evaluation at the same time (such as both depend on
      DPR). At the same time, the order is also not defined, so
      with such a setup as following:
      
      sourceSize.width: width * eDPR
      sourceSize.height: height * eDPR
      
      When eDPR changes, Qt evaluates the binding for width or height,
      adjusts sourceSize, sourceSize changes and change signal is signalled,
      then evaluates the other sub-part of the value type (width or height),
      adjusts sourceSize, sourceSize changes again and change signal is
      signalled. Qt could technically optimize this, but as of Qt 6.8.1
      it is not the case.
      
      Meanwhile with the following:
      
      sourceSize: Qt.size(width * eDPR, height * eDPR)
      
      When eDPR changes, Qt evaluates the binding and adjusts the source
      size, sourceSize changes and change signal is signalled. Source size
      does not change two times, and the image would not be loaded two
      times.
      cf11d530
    • Fatih Uzunoğlu's avatar
      qml: prevent assigning intermediate value to source size in `VideoInfoExpandPanel.qml` · a25a34da
      Fatih Uzunoğlu authored and Steve Lhomme's avatar Steve Lhomme committed
      Partially changing a value type changes the whole value. In
      image case, this means that the images can get re-loaded with
      indeterminate size just to discard them after the size is
      determined.
      
      Fortunately this does not happen currently, because the sizes
      are determined before the component is complete and QQuickImage
      only loads if the component is complete.
      
      However, due to the declarative nature of QML, bindings are
      evaluated and assigned one by one, this means that source size
      would be changed two times even if .width and .height are
      pending re-evaluation at the same time (such as both depend on
      DPR). At the same time, the order is also not defined, so
      with such a setup as following:
      
      sourceSize.width: width * eDPR
      sourceSize.height: height * eDPR
      
      When eDPR changes, Qt evaluates the binding for width or height,
      adjusts sourceSize, sourceSize changes and change signal is signalled,
      then evaluates the other sub-part of the value type (width or height),
      adjusts sourceSize, sourceSize changes again and change signal is
      signalled. Qt could technically optimize this, but as of Qt 6.8.1
      it is not the case.
      
      Meanwhile with the following:
      
      sourceSize: Qt.size(width * eDPR, height * eDPR)
      
      When eDPR changes, Qt evaluates the binding and adjusts the source
      size, sourceSize changes and change signal is signalled. Source size
      does not change two times, and the image would not be loaded two
      times.
      a25a34da
    • Fatih Uzunoğlu's avatar
      qml: re-layout when implicit height of menu bar changes in `TopBar.qml` · 2a0f7735
      Fatih Uzunoğlu authored and Steve Lhomme's avatar Steve Lhomme committed
      This fixes the layouting issue where the cone bar overlaps with the
      menu bar when the page changes (such as, switching to player view).
      2a0f7735
    • Fatih Uzunoğlu's avatar
      qt: introduce setting `qt-pip-mode` · 80868bba
      Fatih Uzunoğlu authored and Steve Lhomme's avatar Steve Lhomme committed
      This setting allows disabling picture-in-picture mode.
      80868bba
    • Alexandre Janniaux's avatar
      clock: dump more metrics in traces · c9acd8a0
      Alexandre Janniaux authored and Steve Lhomme's avatar Steve Lhomme committed
      This adds the clock context id metric which allows tracking some of the
      lipsync issues by checking every contexts are switching to the new
      context reliably. In this patch, clock->context can be null, but in
      future work it will never be NULL.
      
      This also setup a new tag on traces exposed by TraceRender to separate
      the metrics where ts is the current time and metrics where ts is a time
      provided by the tracer user. The rationale is that some systems cannot
      render non-monotonic metrics and the time at which the event appear is
      more important than the value of the timestamp, which should be traced
      separately.
      c9acd8a0
    • Alexandre Janniaux's avatar
      es_out: report buffering in traces · 0296836c
      Alexandre Janniaux authored and Steve Lhomme's avatar Steve Lhomme committed
      This reports the buffering level (in ms) from the input clock in the
      traces, which is useful to analyze artifacts generated by the access or
      the input mainloop, as well as the startup condition.
      0296836c
    • Alexandre Janniaux's avatar
      input_clock: report buffering to es_out · 79b30239
      Alexandre Janniaux authored and Steve Lhomme's avatar Steve Lhomme committed
      This reports the buffering level (in ms) from the input clock in the
      es_out, so that the core can track the buffering level in the current
      playback.
      
      The es_out is currently only using the value if positive to trigger a
      rebuffering. Previous <= 0 values were discarded.
      79b30239
    • Alexandre Janniaux's avatar
      input: decoder: trace decoder wait · 6115dab8
      Alexandre Janniaux authored and Steve Lhomme's avatar Steve Lhomme committed
      
      The events are tracing when decoders are ready for the input to start,
      providing details on why the playback startup is being delayed.
      
      Co-authored-by: default avatarThomas Guillem <thomas@gllm.fr>
      6115dab8
Loading