Skip to content
Commits on Source (4)
......@@ -46,7 +46,7 @@ import javax.tv.xlet.XletContext;
import javax.tv.xlet.XletStateChangeException;
import org.bluray.bdplus.StatusListener;
public class Adapter implements BDJClassLoaderAdapter {
public class Adapter extends LoaderAdapter implements BDJClassLoaderAdapter {
public Map getHideClasses() {
return null;
......
......@@ -21,17 +21,15 @@
#if !defined(_MPLS_PARSE_H_)
#define _MPLS_PARSE_H_
#include "mpls_data.h"
#include "uo_mask_table.h"
#include "util/attributes.h"
#include <stdint.h>
struct bd_disc;
struct mpls_pl;
BD_PRIVATE MPLS_PL* mpls_parse(const char *path) BD_ATTR_MALLOC;
BD_PRIVATE MPLS_PL* mpls_get(struct bd_disc *disc, const char *file);
BD_PRIVATE void mpls_free(MPLS_PL **pl);
BD_PRIVATE struct mpls_pl *mpls_parse(const char *path);
BD_PRIVATE struct mpls_pl *mpls_get(struct bd_disc *disc, const char *file);
BD_PRIVATE void mpls_free(struct mpls_pl **pl);
#endif // _MPLS_PARSE_H_
......@@ -239,11 +239,16 @@ _filter_repeats(MPLS_PL *pl, unsigned repeats)
static void _video_props(MPLS_STN *s, int *format, int *codec)
{
unsigned ii;
*codec = 1;
*codec = 0;
*format = 0;
for (ii = 0; ii < s->num_video; ii++) {
if (s->video[ii].coding_type > 4) {
*codec = 0;
if (*codec < 1) {
*codec = 1;
}
}
if (s->video[ii].coding_type == BD_STREAM_TYPE_VIDEO_HEVC) {
*codec = 2;
}
if (s->video[ii].format == BD_VIDEO_FORMAT_1080I || s->video[ii].format == BD_VIDEO_FORMAT_1080P) {
if (*format < 1) {
......@@ -280,7 +285,7 @@ static int _cmp_video_props(const MPLS_PL *p1, const MPLS_PL *p2)
if (format1 != format2)
return format2 - format1;
/* prefer H.264/VC1 over MPEG1/2 */
/* prefer H.265 over H.264/VC1 over MPEG1/2 */
return codec2 - codec1;
}
......
......@@ -2102,6 +2102,10 @@ static int _preload_textst_subpath(BLURAY *bd)
if (textst_subpath < 0) {
return 0;
}
if (textst_pid != 0x1800) {
BD_DEBUG(DBG_BLURAY | DBG_CRIT, "_preload_textst_subpath(): ignoring pid 0x%x\n", (unsigned)textst_pid);
return 0;
}
if ((unsigned)textst_subpath >= bd->title->sub_path_count) {
BD_DEBUG(DBG_BLURAY | DBG_CRIT, "_preload_textst_subpath(): invalid subpath id\n");
......@@ -2131,7 +2135,7 @@ static int _preload_textst_subpath(BLURAY *bd)
return 0;
}
gc_decode_ts(bd->graphics_controller, 0x1800, bd->st_textst.buf, SPN(bd->st_textst.clip_size) / 32, -1);
gc_decode_ts(bd->graphics_controller, textst_pid, bd->st_textst.buf, SPN(bd->st_textst.clip_size) / 32, -1);
/* set fonts and encoding from clip info */
gc_add_font(bd->graphics_controller, NULL, -1); /* reset fonts */
......