[libbluray-devel] [Git][videolan/libbluray][master] Use bdpriv_ prefix for internal functions (BD-J)
Petri Hintukainen (@hpi)
gitlab at videolan.org
Tue Jan 27 22:50:39 UTC 2026
Petri Hintukainen pushed to branch master at VideoLAN / libbluray
Commits:
d4475bac by Petri Hintukainen at 2026-01-28T00:47:37+02:00
Use bdpriv_ prefix for internal functions (BD-J)
- - - - -
6 changed files:
- src/libbluray/bdj/native/org_videolan_Libbluray.c
- src/libbluray/bdj/native/org_videolan_Logger.c
- src/libbluray/bluray.c
- src/libbluray/bluray_internal.h
- src/util/logging.c
- src/util/logging.h
Changes:
=====================================
src/libbluray/bdj/native/org_videolan_Libbluray.c
=====================================
@@ -218,7 +218,7 @@ JNIEXPORT jbyteArray JNICALL Java_org_videolan_Libbluray_getAacsDataN
(JNIEnv * env, jclass cls, jlong np, jint type)
{
BLURAY* bd = (BLURAY*)(intptr_t)np;
- const uint8_t *data = disc_get_data(bd_get_disc(bd), type);
+ const uint8_t *data = disc_get_data(bdpriv_get_disc(bd), type);
size_t data_size = 16;
BD_DEBUG(DBG_JNI, "getAacsDataN(%d) -> %p\n", (int)type, (const void *)data);
@@ -249,7 +249,7 @@ JNIEXPORT jlong JNICALL Java_org_videolan_Libbluray_getUOMaskN(JNIEnv * env,
BLURAY* bd = (BLURAY*)(intptr_t)np;
BD_DEBUG(DBG_JNI, "getUOMaskN()\n");
- return bd_get_uo_mask(bd);
+ return bdpriv_get_uo_mask(bd);
}
JNIEXPORT void JNICALL Java_org_videolan_Libbluray_setUOMaskN(JNIEnv * env,
@@ -257,7 +257,7 @@ JNIEXPORT void JNICALL Java_org_videolan_Libbluray_setUOMaskN(JNIEnv * env,
BLURAY* bd = (BLURAY*)(intptr_t)np;
BD_DEBUG(DBG_JNI, "setUOMaskN(%d,%d)\n", (int)menuCallMask, (int)titleSearchMask);
- bd_set_bdj_uo_mask(bd, ((!!menuCallMask) * BDJ_MENU_CALL_MASK) | ((!!titleSearchMask) * BDJ_TITLE_SEARCH_MASK));
+ bdpriv_set_bdj_uo_mask(bd, ((!!menuCallMask) * BDJ_MENU_CALL_MASK) | ((!!titleSearchMask) * BDJ_TITLE_SEARCH_MASK));
}
JNIEXPORT void JNICALL Java_org_videolan_Libbluray_setKeyInterestN(JNIEnv * env,
@@ -265,7 +265,7 @@ JNIEXPORT void JNICALL Java_org_videolan_Libbluray_setKeyInterestN(JNIEnv * env,
BLURAY* bd = (BLURAY*)(intptr_t)np;
BD_DEBUG(DBG_JNI, "setKeyInterestN(0x%x)\n", (int)mask);
- bd_set_bdj_kit(bd, mask);
+ bdpriv_set_bdj_kit(bd, mask);
}
JNIEXPORT jint JNICALL Java_org_videolan_Libbluray_setVirtualPackageN(JNIEnv * env,
@@ -280,7 +280,7 @@ JNIEXPORT jint JNICALL Java_org_videolan_Libbluray_setVirtualPackageN(JNIEnv * e
BD_DEBUG(DBG_JNI|DBG_CRIT, "setVirtualPackageN(%s,%d)\n", path ? path : "<null>", (int)psr_init_backup);
- result = bd_set_virtual_package(bd, path, (int)psr_init_backup);
+ result = bdpriv_set_virtual_package(bd, path, (int)psr_init_backup);
if (vpPath) {
(*env)->ReleaseStringUTFChars(env, vpPath, path);
@@ -295,7 +295,7 @@ JNIEXPORT jlong JNICALL Java_org_videolan_Libbluray_seekN(JNIEnv * env,
BD_DEBUG(DBG_JNI, "seekN(tick=%" PRId64 ", mark=%d, playitem=%d)\n", (int64_t)tick, (int)playmark, (int)playitem);
- return bd_bdj_seek(bd, playitem, playmark, tick);
+ return bdpriv_seek(bd, playitem, playmark, tick);
}
JNIEXPORT jint JNICALL Java_org_videolan_Libbluray_selectPlaylistN(
@@ -309,7 +309,7 @@ JNIEXPORT jint JNICALL Java_org_videolan_Libbluray_selectPlaylistN(
BD_DEBUG(DBG_JNI, "selectPlaylistN(pl=%d, pi=%d, pm=%d, time=%ld)\n",
(int)playlist, (int)playitem, (int)playmark, (long)time);
- return bd_play_playlist_at(bd, playlist, playitem, playmark, time);
+ return bdpriv_play_playlist_at(bd, playlist, playitem, playmark, time);
}
JNIEXPORT jint JNICALL Java_org_videolan_Libbluray_selectTitleN(JNIEnv * env,
@@ -318,7 +318,7 @@ JNIEXPORT jint JNICALL Java_org_videolan_Libbluray_selectTitleN(JNIEnv * env,
BD_DEBUG(DBG_JNI, "selectTitleN(%d)\n", (int)title);
- return bd_play_title_internal(bd, title);
+ return bdpriv_play_title_internal(bd, title);
}
JNIEXPORT jint JNICALL Java_org_videolan_Libbluray_selectAngleN(JNIEnv * env,
@@ -330,7 +330,7 @@ JNIEXPORT jint JNICALL Java_org_videolan_Libbluray_selectAngleN(JNIEnv * env,
JNIEXPORT jint JNICALL Java_org_videolan_Libbluray_soundEffectN(JNIEnv * env,
jclass cls, jlong np, jint id) {
BLURAY* bd = (BLURAY*)(intptr_t)np;
- return bd_bdj_sound_effect(bd, id);
+ return bdpriv_sound_effect(bd, id);
}
JNIEXPORT jlong JNICALL Java_org_videolan_Libbluray_tellTimeN(JNIEnv * env,
@@ -345,14 +345,14 @@ JNIEXPORT jint JNICALL Java_org_videolan_Libbluray_selectRateN(JNIEnv * env,
BD_DEBUG(DBG_JNI, "selectRateN(%1.1f, %d)\n", (float)rate, (int)reason);
- bd_select_rate(bd, (float)rate, reason);
+ bdpriv_select_rate(bd, (float)rate, reason);
return 1;
}
JNIEXPORT jint JNICALL Java_org_videolan_Libbluray_readRegN(JNIEnv * env,
jclass cls, jlong np, jint is_psr, jint num) {
BLURAY* bd = (BLURAY*)(intptr_t)np;
- int value = bd_reg_read(bd, is_psr, num);
+ int value = bdpriv_reg_read(bd, is_psr, num);
BD_DEBUG(DBG_JNI, "readRegN(%s_%d) -> %d\n", is_psr ? "PSR" : "GPR", (int)num, (int)value);
@@ -371,7 +371,7 @@ JNIEXPORT jint JNICALL Java_org_videolan_Libbluray_writeRegN(JNIEnv * env,
is_psr ? "PSR" : "GPR", (int)num, (int)value, (int)mask);
}
- return bd_reg_write(bd, is_psr, num, value, mask);
+ return bdpriv_reg_write(bd, is_psr, num, value, mask);
}
JNIEXPORT jint JNICALL Java_org_videolan_Libbluray_cacheBdRomFileN(JNIEnv * env,
@@ -379,7 +379,7 @@ JNIEXPORT jint JNICALL Java_org_videolan_Libbluray_cacheBdRomFileN(JNIEnv * env,
jstring jrel_path, jstring jcache_path) {
BLURAY *bd = (BLURAY*)(intptr_t)np;
- BD_DISC *disc = bd_get_disc(bd);
+ BD_DISC *disc = bdpriv_get_disc(bd);
int result = -1;
const char *rel_path = (*env)->GetStringUTFChars(env, jrel_path, NULL);
@@ -408,7 +408,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_videolan_Libbluray_listBdFilesN(JNIEnv *
jboolean onlyBdRom) {
BLURAY *bd = (BLURAY*)(intptr_t)np;
- BD_DISC *disc = bd_get_disc(bd);
+ BD_DISC *disc = bdpriv_get_disc(bd);
const char *path = (*env)->GetStringUTFChars(env, jpath, NULL);
if (!path) {
@@ -485,7 +485,7 @@ JNIEXPORT jobject JNICALL Java_org_videolan_Libbluray_getBdjoN(JNIEnv * env,
}
BD_DEBUG(DBG_JNI, "getBdjoN(%s)\n", file);
- bdjo = bdjo_get(bd_get_disc(bd), file);
+ bdjo = bdjo_get(bdpriv_get_disc(bd), file);
if (bdjo) {
jbdjo = bdjo_make_jobj(env, bdjo);
bdjo_free(&bdjo);
@@ -505,7 +505,7 @@ static void _updateGraphic(JNIEnv * env,
/* close ? */
if (!rgbArray) {
- bd_bdj_osd_cb(bd, NULL, (int)width, (int)height, 0, 0, 0, 0);
+ bdpriv_bdj_osd_cb(bd, NULL, (int)width, (int)height, 0, 0, 0, 0);
return;
}
@@ -587,7 +587,7 @@ static void _updateGraphic(JNIEnv * env,
buf->unlock(buf);
}
- bd_bdj_osd_cb(bd, buf->buf[BD_OVERLAY_IG], (int)width, (int)height,
+ bdpriv_bdj_osd_cb(bd, buf->buf[BD_OVERLAY_IG], (int)width, (int)height,
x0, y0, x1, y1);
} else {
@@ -596,7 +596,7 @@ static void _updateGraphic(JNIEnv * env,
jint *image = (jint *)(*env)->GetPrimitiveArrayCritical(env, rgbArray, NULL);
if (image) {
- bd_bdj_osd_cb(bd, (const unsigned *)image, (int)width, (int)height,
+ bdpriv_bdj_osd_cb(bd, (const unsigned *)image, (int)width, (int)height,
x0, y0, x1, y1);
(*env)->ReleasePrimitiveArrayCritical(env, rgbArray, image, JNI_ABORT);
} else {
@@ -623,11 +623,11 @@ JNIEXPORT void JNICALL Java_org_videolan_Libbluray_updateGraphicN(JNIEnv * env,
return;
}
- BD_ARGB_BUFFER *buf = bd_lock_osd_buffer(bd);
+ BD_ARGB_BUFFER *buf = bdpriv_lock_osd_buffer(bd);
_updateGraphic(env, bd, width, height, rgbArray, x0, y0, x1, y1, buf);
- bd_unlock_osd_buffer(bd);
+ bdpriv_unlock_osd_buffer(bd);
}
#define CC (char*)(uintptr_t) /* cast a literal from (const char*) */
=====================================
src/libbluray/bdj/native/org_videolan_Logger.c
=====================================
@@ -62,7 +62,7 @@ Java_org_videolan_Logger_logN(JNIEnv *env, jclass cls, jboolean error, jstring j
mask |= DBG_CRIT;
}
- bd_debug(file ? file : "JVM", line, mask, "%s\n", msg);
+ bdpriv_debug(file ? file : "JVM", line, mask, "%s\n", msg);
if (file) {
(*env)->ReleaseStringUTFChars(env, jfile, file);
=====================================
src/libbluray/bluray.c
=====================================
@@ -1217,7 +1217,7 @@ const BLURAY_DISC_INFO *bd_get_disc_info(BLURAY *bd)
* bdj callbacks
*/
-void bd_set_bdj_uo_mask(BLURAY *bd, unsigned mask)
+void bdpriv_set_bdj_uo_mask(BLURAY *bd, unsigned mask)
{
bd->title_uo_mask.title_search = !!(mask & BDJ_TITLE_SEARCH_MASK);
bd->title_uo_mask.menu_call = !!(mask & BDJ_MENU_CALL_MASK);
@@ -1225,7 +1225,7 @@ void bd_set_bdj_uo_mask(BLURAY *bd, unsigned mask)
_update_uo_mask(bd);
}
-uint64_t bd_get_uo_mask(BLURAY *bd)
+uint64_t bdpriv_get_uo_mask(BLURAY *bd)
{
/* internal function. Used by BD-J (and UO masking checks). */
union {
@@ -1242,15 +1242,15 @@ uint64_t bd_get_uo_mask(BLURAY *bd)
static int _is_uo_masked(BLURAY *bd, bd_uo_mask_index_e mask_index)
{
- return (bd->title_type != title_undef) && !!(bd_get_uo_mask(bd) & (1ull << mask_index));
+ return (bd->title_type != title_undef) && !!(bdpriv_get_uo_mask(bd) & (1ull << mask_index));
}
-void bd_set_bdj_kit(BLURAY *bd, int mask)
+void bdpriv_set_bdj_kit(BLURAY *bd, int mask)
{
_queue_event(bd, BD_EVENT_KEY_INTEREST_TABLE, mask);
}
-int bd_bdj_sound_effect(BLURAY *bd, int id)
+int bdpriv_sound_effect(BLURAY *bd, int id)
{
if (bd->sound_effects && id >= bd->sound_effects->num_sounds) {
return -1;
@@ -1263,7 +1263,7 @@ int bd_bdj_sound_effect(BLURAY *bd, int id)
return 0;
}
-void bd_select_rate(BLURAY *bd, float rate, int reason)
+void bdpriv_select_rate(BLURAY *bd, float rate, int reason)
{
if (reason == BDJ_PLAYBACK_STOP) {
/* playback stop. Might want to wait for buffers empty here. */
@@ -1271,7 +1271,7 @@ void bd_select_rate(BLURAY *bd, float rate, int reason)
}
if (reason == BDJ_PLAYBACK_START) {
- /* playback is triggered by bd_select_rate() */
+ /* playback is triggered by bdpriv_select_rate() */
bd->bdj_wait_start = 0;
}
@@ -1282,27 +1282,6 @@ void bd_select_rate(BLURAY *bd, float rate, int reason)
}
}
-static int64_t _seek_time(BLURAY *bd, uint64_t tick, uint8_t is_uo_mask_checked);
-
-int bd_bdj_seek(BLURAY *bd, int playitem, int playmark, int64_t time)
-{
- bd_mutex_lock(&bd->mutex);
-
- if (playitem > 0) {
- bd_seek_playitem(bd, playitem);
- }
- if (playmark >= 0) {
- bd_seek_mark(bd, playmark);
- }
- if (time >= 0) {
- _seek_time(bd, time, 0);
- }
-
- bd_mutex_unlock(&bd->mutex);
-
- return 1;
-}
-
static int _bd_set_virtual_package(BLURAY *bd, const char *vp_path, int psr_init_backup)
{
if (bd->title) {
@@ -1325,7 +1304,7 @@ static int _bd_set_virtual_package(BLURAY *bd, const char *vp_path, int psr_init
return 0;
}
-int bd_set_virtual_package(BLURAY *bd, const char *vp_path, int psr_init_backup)
+int bdpriv_set_virtual_package(BLURAY *bd, const char *vp_path, int psr_init_backup)
{
int ret;
bd_mutex_lock(&bd->mutex);
@@ -1334,12 +1313,12 @@ int bd_set_virtual_package(BLURAY *bd, const char *vp_path, int psr_init_backup)
return ret;
}
-BD_DISC *bd_get_disc(BLURAY *bd)
+BD_DISC *bdpriv_get_disc(BLURAY *bd)
{
return bd ? bd->disc : NULL;
}
-uint32_t bd_reg_read(BLURAY *bd, int psr, int reg)
+uint32_t bdpriv_reg_read(BLURAY *bd, int psr, int reg)
{
if (psr) {
return bd_psr_read(bd->regs, reg);
@@ -1348,7 +1327,7 @@ uint32_t bd_reg_read(BLURAY *bd, int psr, int reg)
}
}
-int bd_reg_write(BLURAY *bd, int psr, int reg, uint32_t value, uint32_t psr_value_mask)
+int bdpriv_reg_write(BLURAY *bd, int psr, int reg, uint32_t value, uint32_t psr_value_mask)
{
if (psr) {
if (psr < 102) {
@@ -1365,13 +1344,13 @@ int bd_reg_write(BLURAY *bd, int psr, int reg, uint32_t value, uint32_t psr_valu
}
}
-BD_ARGB_BUFFER *bd_lock_osd_buffer(BLURAY *bd)
+BD_ARGB_BUFFER *bdpriv_lock_osd_buffer(BLURAY *bd)
{
bd_mutex_lock(&bd->argb_buffer_mutex);
return bd->argb_buffer;
}
-void bd_unlock_osd_buffer(BLURAY *bd)
+void bdpriv_unlock_osd_buffer(BLURAY *bd)
{
bd_mutex_unlock(&bd->argb_buffer_mutex);
}
@@ -1379,7 +1358,7 @@ void bd_unlock_osd_buffer(BLURAY *bd)
/*
* handle graphics updates from BD-J layer
*/
-void bd_bdj_osd_cb(BLURAY *bd, const unsigned *img, int w, int h,
+void bdpriv_bdj_osd_cb(BLURAY *bd, const unsigned *img, int w, int h,
int x0, int y0, int x1, int y1)
{
BD_ARGB_OVERLAY aov;
@@ -2594,6 +2573,26 @@ int bd_select_playlist(BLURAY *bd, uint32_t playlist)
return result;
}
+/* BD-J callback */
+int bdpriv_seek(BLURAY *bd, int playitem, int playmark, int64_t time)
+{
+ bd_mutex_lock(&bd->mutex);
+
+ if (playitem > 0) {
+ bd_seek_playitem(bd, playitem);
+ }
+ if (playmark >= 0) {
+ bd_seek_mark(bd, playmark);
+ }
+ if (time >= 0) {
+ _seek_time(bd, time, 0);
+ }
+
+ bd_mutex_unlock(&bd->mutex);
+
+ return 1;
+}
+
/* BD-J callback */
static int _play_playlist_at(BLURAY *bd, int playlist, int playitem, int playmark, int64_t time)
{
@@ -2606,15 +2605,15 @@ static int _play_playlist_at(BLURAY *bd, int playlist, int playitem, int playmar
return 0;
}
- bd->bdj_wait_start = 1; /* playback is triggered by bd_select_rate() */
+ bd->bdj_wait_start = 1; /* playback is triggered by bdpriv_select_rate() */
- bd_bdj_seek(bd, playitem, playmark, time);
+ bdpriv_seek(bd, playitem, playmark, time);
return 1;
}
/* BD-J callback */
-int bd_play_playlist_at(BLURAY *bd, int playlist, int playitem, int playmark, int64_t time)
+int bdpriv_play_playlist_at(BLURAY *bd, int playlist, int playitem, int playmark, int64_t time)
{
int result;
@@ -3583,7 +3582,7 @@ static int _play_title(BLURAY *bd, unsigned title)
}
/* BD-J callback */
-int bd_play_title_internal(BLURAY *bd, unsigned title)
+int bdpriv_play_title_internal(BLURAY *bd, unsigned title)
{
/* used by BD-J. Like bd_play_title() but bypasses UO mask checks. */
int ret;
=====================================
src/libbluray/bluray_internal.h
=====================================
@@ -31,9 +31,9 @@ struct bd_disc;
* VFS
*/
-BD_PRIVATE struct bd_disc *bd_get_disc(struct bluray *bd);
+BD_PRIVATE struct bd_disc *bdpriv_get_disc(struct bluray *bd);
-BD_PRIVATE int bd_set_virtual_package(struct bluray *bd, const char *vp_path, int psr_init_backup);
+BD_PRIVATE int bdpriv_set_virtual_package(struct bluray *bd, const char *vp_path, int psr_init_backup);
/*
* UO mask, KIT
@@ -42,22 +42,22 @@ BD_PRIVATE int bd_set_virtual_package(struct bluray *bd, const char *vp_pat
#define BDJ_MENU_CALL_MASK 0x01
#define BDJ_TITLE_SEARCH_MASK 0x02
-BD_PRIVATE uint64_t bd_get_uo_mask(struct bluray *bd);
-BD_PRIVATE void bd_set_bdj_uo_mask(struct bluray *bd, unsigned mask);
-BD_PRIVATE void bd_set_bdj_kit(struct bluray *bd, int mask);
+BD_PRIVATE uint64_t bdpriv_get_uo_mask(struct bluray *bd);
+BD_PRIVATE void bdpriv_set_bdj_uo_mask(struct bluray *bd, unsigned mask);
+BD_PRIVATE void bdpriv_set_bdj_kit(struct bluray *bd, int mask);
/*
* title selection
*/
-BD_PRIVATE int bd_play_title_internal(struct bluray *bd, unsigned title);
+BD_PRIVATE int bdpriv_play_title_internal(struct bluray *bd, unsigned title);
/*
* register access
*/
-BD_PRIVATE uint32_t bd_reg_read(struct bluray *bd, int psr, int reg);
-BD_PRIVATE int bd_reg_write(struct bluray *bd, int psr, int reg, uint32_t value, uint32_t psr_value_mask);
+BD_PRIVATE uint32_t bdpriv_reg_read(struct bluray *bd, int psr, int reg);
+BD_PRIVATE int bdpriv_reg_write(struct bluray *bd, int psr, int reg, uint32_t value, uint32_t psr_value_mask);
/*
* playback control
@@ -69,10 +69,10 @@ enum bd_select_rate_reason {
BDJ_PLAYBACK_STOP = 2,
};
-BD_PRIVATE int bd_play_playlist_at(struct bluray *bd, int playlist, int playitem, int playmark, int64_t time);
-BD_PRIVATE void bd_select_rate(struct bluray *bd, float rate, int reason);
-BD_PRIVATE int bd_bdj_seek(struct bluray *bd, int playitem, int playmark, int64_t time);
-BD_PRIVATE int bd_bdj_sound_effect(struct bluray *bd, int id);
+BD_PRIVATE int bdpriv_play_playlist_at(struct bluray *bd, int playlist, int playitem, int playmark, int64_t time);
+BD_PRIVATE void bdpriv_select_rate(struct bluray *bd, float rate, int reason);
+BD_PRIVATE int bdpriv_seek(struct bluray *bd, int playitem, int playmark, int64_t time);
+BD_PRIVATE int bdpriv_sound_effect(struct bluray *bd, int id);
/*
* BD-J overlay
@@ -80,10 +80,10 @@ BD_PRIVATE int bd_bdj_sound_effect(struct bluray *bd, int id);
struct bd_argb_buffer_s;
-BD_PRIVATE struct bd_argb_buffer_s *bd_lock_osd_buffer(struct bluray *bd);
-BD_PRIVATE void bd_unlock_osd_buffer(struct bluray *bd);
+BD_PRIVATE struct bd_argb_buffer_s *bdpriv_lock_osd_buffer(struct bluray *bd);
+BD_PRIVATE void bdpriv_unlock_osd_buffer(struct bluray *bd);
-BD_PRIVATE void bd_bdj_osd_cb(struct bluray *bd, const unsigned *img, int w, int h,
- int x0, int y0, int x1, int y1);
+BD_PRIVATE void bdpriv_bdj_osd_cb(struct bluray *bd, const unsigned *img, int w, int h,
+ int x0, int y0, int x1, int y1);
#endif /* _BLURAY_INTERNAL_H_ */
=====================================
src/util/logging.c
=====================================
@@ -49,7 +49,7 @@ uint32_t bd_get_debug_mask(void)
return debug_mask;
}
-void bd_debug(const char *file, int line, uint32_t mask, const char *format, ...)
+void bdpriv_debug(const char *file, int line, uint32_t mask, const char *format, ...)
{
static int debug_init = 0, debug_file = 0;
static FILE *logfile = NULL;
=====================================
src/util/logging.h
=====================================
@@ -32,11 +32,11 @@ BD_PRIVATE extern uint32_t debug_mask;
#define BD_DEBUG(MASK,...) \
do { \
if (BD_UNLIKELY((MASK) & debug_mask)) { \
- bd_debug(__FILE__,__LINE__,MASK,__VA_ARGS__); \
+ bdpriv_debug(__FILE__,__LINE__,MASK,__VA_ARGS__); \
} \
} while (0)
-BD_PRIVATE void bd_debug(const char *file, int line, uint32_t mask, const char *format, ...) BD_ATTR_FORMAT_PRINTF(4,5);
+BD_PRIVATE void bdpriv_debug(const char *file, int line, uint32_t mask, const char *format, ...) BD_ATTR_FORMAT_PRINTF(4,5);
#endif /* LOGGING_H_ */
View it on GitLab: https://code.videolan.org/videolan/libbluray/-/commit/d4475bac019ae75b3515907e09ce1ec1561251a3
--
View it on GitLab: https://code.videolan.org/videolan/libbluray/-/commit/d4475bac019ae75b3515907e09ce1ec1561251a3
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the libbluray-devel
mailing list