- Jun 18, 2020
-
-
Steve Lhomme authored
It's better than -O0 in some cases, like clang on i686 that gives this error: In file included from libavcodec/h264_cabac.c:46: libavcodec/x86/h264_cabac.c:66:9: error: inline assembly requires more registers than available "3: \n\t" ^ 1 error generated. make[1]: *** [ffbuild/common.mak:59: libavcodec/h264_cabac.o] Error 1
-
Steve Lhomme authored
Avoid this link error: [ 44%] Linking C executable curltest Undefined symbols for architecture x86_64: "_SSLCopyALPNProtocols", referenced from: _sectransp_connect_step2 in libcmcurl.a(sectransp.c.o) "_SSLSetALPNProtocols", referenced from: _sectransp_connect_common in libcmcurl.a(sectransp.c.o) ld: symbol(s) not found for architecture x86_64 This only happens in the 3.0 macOS CI.
-
- Jun 17, 2020
-
-
François Cartegnie authored
-
François Cartegnie authored
-
Uploading a picture_t to OpenGL flips it vertically. To display the video in the correct orientation, the renderer reversed the transformation: each vertex received as attribute texture coordinates (x, 1-y) instead of (x, y), in order to flip the image vertically. This caused several problems. Firstly, the renderer must be independent of the input picture storage. Otherwise, when it receives an input in the normal orientation, it will wrongly apply a vertical flip. Secondly, since the vflip was applied on the input coordinates, it occurred before the orientation transform: OrientationMatrix * VFlipMatrix * input_coords (semantically) whereas the correct transformation is: VFlipMatrix * OrientationMatrix * input_coords (for reasons explained in e329c4bb). Since matrix multiplication is not commutative, it resulted in a wrong orientation in some cases (for example if OrientationMatrix contains a rotation by 90 degrees). (In fact, in pratice, this case still worked, because the initialization of OrientationMatrix was also wrong, see the two previous commits). To fix all these problems, initialize the texture coordinates in the normal orientation in the renderer, and apply the vertical flip on the interop format orientation. This also allows to simplify the Android interop, which can just provide its own transform matrix without compensating for the vertical flip that was applied in the renderer. Signed-off-by:
Alexandre Janniaux <ajanni@videolabs.io>
-
Simplify the initialization matrices and document, so that they do not just contain magic values. Signed-off-by:
Alexandre Janniaux <ajanni@videolabs.io>
-
The orientation matrices were incorrect. This commit is just here to show the differences, but the next commit will rewrite their initialization to make them more readable. Signed-off-by:
Alexandre Janniaux <ajanni@videolabs.io>
-
Alexandre Janniaux authored
EBML can associate multiple class to a single EBML ID, which mean that it potentially needs typeid checks. However, libmatroska always exposes a single type per EBML ID, so it never needs those checks. In addition, those checks are leading to warnings (attached below) and issues depending on the visibility and optimization level on clang. See the following mail on the mailing list for reference: https://lists.llvm.org/pipermail/llvm-dev/2014-June/073465.html To sum up, typeinfo are becoming different between libmatroska and the matroska modules for the same classes, so the matroska demuxer is never able to open correctly in those case, and it fallbacks on avformat demuxer if available. Compilation warning fixed by this patch: ../../../modules/demux/mkv/chapter_command.cpp:35:13: warning: expression with side effects will be evaluated despite being used as an operand to 'typeid' [-Wpotentially-evaluated-expression] if( MKV_CHECKED_PTR_DECL( p_cpt, KaxChapterProcessTime const, command[i] ) ) ^ ../../../modules/demux/mkv/mkv.hpp:116:63: note: expanded from macro 'MKV_CHECKED_PTR_DECL' #define MKV_CHECKED_PTR_DECL( name, type, src ) type * name = MKV_IS_ID(src, type) ? static_cast<type*>(src) : NULL ^ ../../../modules/demux/mkv/mkv.hpp:115:52: note: expanded from macro 'MKV_IS_ID' #define MKV_IS_ID( el, C ) ( el != NULL && typeid( *el ) == typeid( C ) ) ^ ../../../modules/demux/mkv/chapter_command.cpp:44:13: warning: expression with side effects will be evaluated despite being used as an operand to 'typeid' [-Wpotentially-evaluated-expression] if( MKV_CHECKED_PTR_DECL( p_cpd, KaxChapterProcessData const, command[i] ) ) ^ ../../../modules/demux/mkv/mkv.hpp:116:63: note: expanded from macro 'MKV_CHECKED_PTR_DECL' #define MKV_CHECKED_PTR_DECL( name, type, src ) type * name = MKV_IS_ID(src, type) ? static_cast<type*>(src) : NULL ^ ../../../modules/demux/mkv/mkv.hpp:115:52: note: expanded from macro 'MKV_IS_ID' #define MKV_IS_ID( el, C ) ( el != NULL && typeid( *el ) == typeid( C ) ) The issue was initially spotted through link-time warnings mentionning incompatible visibility settings between the library archives and the final static libvlc archive when compiling for iOS. Fix VLCKit#372
-
Steve Lhomme authored
-
François Cartegnie authored
telx is also optional
-
Steve Lhomme authored
This fixes CI failure on branches with a lot of patches.
-
Thomas Guillem authored
-
Thomas Guillem authored
-
Thomas Guillem authored
The libvlc_media_player_update_tracklist() design was not straight-forward and was not easy to use on some languages. For example, vlcpp will expose a vector of tracks instead of a tracklist, so requiring a tracklist pointer to select multiple tracks adds a lot of complexity (returning a vector and keeping a pointer to the tracklist).
-
Thomas Guillem authored
libvlc_media_track_hold() can be used in order to have a track outliving the tracklist.
-
Thomas Guillem authored
Since libvlc_media_track_t will be refcounted.
-
Thomas Guillem authored
This reverts commit e597536f.
-
Thomas Guillem authored
Since libvlc_media_track_t will be refcounted.
-
François Cartegnie authored
-
François Cartegnie authored
-
François Cartegnie authored
-
François Cartegnie authored
allows to override global options for each track using type/creation index --mock-config="video[0]{var=val,val=val}+video[2]{val=val}"
-
François Cartegnie authored
-
François Cartegnie authored
-
- Jun 16, 2020
-
-
François Cartegnie authored
-
François Cartegnie authored
refs #24871
-
- Jun 15, 2020
-
-
For convenience, use a local variable to reference the vlc_gl_api. Signed-off-by:
Alexandre Janniaux <ajanni@videolabs.io>
-
This avoids to rewrite consecutive cleanups on each error case. Signed-off-by:
Alexandre Janniaux <ajanni@videolabs.io>
-
The name of arrays variable should use the plural form for clarity. Signed-off-by:
Alexandre Janniaux <ajanni@videolabs.io>
-
The purpose of this callback is to load sampler data (bind textures, load uniforms, etc.) to be used for the OpenGL draw call. In addition, the name "load" also allows to possibly add an "unload" function later (to reset bindings). Signed-off-by:
Alexandre Janniaux <ajanni@videolabs.io>
-
This makes explicit that these functions are set by the sampler implementation and must be called by the user of sampler. Signed-off-by:
Alexandre Janniaux <ajanni@videolabs.io>
-
If GetUniformLocation() returns -1, then this is an implementation error. Assert instead of reporting the error to the caller. Signed-off-by:
Alexandre Janniaux <ajanni@videolabs.io>
-
Hide sampler implementation details from renderer. This will allow to expose only what OpenGL filters need in the public API. Signed-off-by:
Alexandre Janniaux <ajanni@videolabs.io>
-
For now, only the renderer dumps its shaders depending on the verbose level. This simplifies vlc_gl_renderer_New(), and paves the way to convert the renderer to an OpenGL filter. Signed-off-by:
Alexandre Janniaux <ajanni@videolabs.io>
-
The code in fragment_shaders.c is part of the implementation of the sampler: it generates the fragment shader to expose a GLSL function "vlc_texture(vec2 coords)". Signed-off-by:
Alexandre Janniaux <ajanni@videolabs.io>
-
The function vlc_gl_renderer_Draw() (almost) just called DrawWithShaders(). There is no need for a separate function. Signed-off-by:
Alexandre Janniaux <ajanni@videolabs.io>
-
Signed-off-by:
Thomas Guillem <thomas@gllm.fr>
-
Thomas Guillem authored
Add references to the functions creating tracks and tracklists from the delete functions.
-
Thomas Guillem authored
To keep compability with the old track API since VLC's ports are still using it. This will be removed when the old track API is removed.
-
Steve Lhomme authored
-