Compare commits

..

2 Commits

Author SHA1 Message Date
Kacper Michajłow 4deb8b3a7a
avutil/vulkan_glslang: use AVMutex instead of pthread_mutex_t
Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
2025-10-27 11:54:53 +01:00
Anthony Bajoua 68152978b5 libavformat/movenc: Output ftyp atom with hybrid_fragmented+delay_moov 2025-10-27 09:06:06 +00:00
2 changed files with 10 additions and 9 deletions

View File

@ -6536,7 +6536,8 @@ static int mov_flush_fragment(AVFormatContext *s, int force)
mov->tracks[i].data_offset = pos + moov_size + 8;
avio_write_marker(s->pb, AV_NOPTS_VALUE, AVIO_DATA_MARKER_HEADER);
if (mov->flags & FF_MOV_FLAG_DELAY_MOOV)
if (mov->flags & FF_MOV_FLAG_DELAY_MOOV &&
!(mov->flags & FF_MOV_FLAG_HYBRID_FRAGMENTED))
mov_write_identification(s->pb, s);
if ((ret = mov_write_moov_tag(s->pb, mov, s)) < 0)
return ret;
@ -8413,7 +8414,8 @@ static int mov_write_header(AVFormatContext *s)
}
}
if (!(mov->flags & FF_MOV_FLAG_DELAY_MOOV)) {
if (!(mov->flags & FF_MOV_FLAG_DELAY_MOOV) ||
(mov->flags & FF_MOV_FLAG_HYBRID_FRAGMENTED)) {
if ((ret = mov_write_identification(pb, s)) < 0)
return ret;
}

View File

@ -16,16 +16,15 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <pthread.h>
#include <glslang/build_info.h>
#include <glslang/Include/glslang_c_interface.h>
#include "vulkan_spirv.h"
#include "libavutil/mem.h"
#include "libavutil/avassert.h"
#include "libavutil/thread.h"
static pthread_mutex_t glslc_mutex = PTHREAD_MUTEX_INITIALIZER;
static AVMutex glslc_mutex = AV_MUTEX_INITIALIZER;
static int glslc_refcount = 0;
static const glslang_resource_t glslc_resource_limits = {
@ -277,10 +276,10 @@ static void glslc_uninit(FFVkSPIRVCompiler **ctx)
if (!ctx || !*ctx)
return;
pthread_mutex_lock(&glslc_mutex);
ff_mutex_lock(&glslc_mutex);
if (glslc_refcount && (--glslc_refcount == 0))
glslang_finalize_process();
pthread_mutex_unlock(&glslc_mutex);
ff_mutex_unlock(&glslc_mutex);
av_freep(ctx);
}
@ -295,14 +294,14 @@ FFVkSPIRVCompiler *ff_vk_glslang_init(void)
ret->free_shader = glslc_shader_free;
ret->uninit = glslc_uninit;
pthread_mutex_lock(&glslc_mutex);
ff_mutex_lock(&glslc_mutex);
if (!glslc_refcount++) {
if (!glslang_initialize_process()) {
av_freep(&ret);
glslc_refcount--;
}
}
pthread_mutex_unlock(&glslc_mutex);
ff_mutex_unlock(&glslc_mutex);
return ret;
}