summaryrefslogtreecommitdiff
path: root/src/input/vcd/vcdplayer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/input/vcd/vcdplayer.c')
-rw-r--r--src/input/vcd/vcdplayer.c565
1 files changed, 293 insertions, 272 deletions
diff --git a/src/input/vcd/vcdplayer.c b/src/input/vcd/vcdplayer.c
index 18c411afe..802c4e508 100644
--- a/src/input/vcd/vcdplayer.c
+++ b/src/input/vcd/vcdplayer.c
@@ -1,5 +1,5 @@
/*
- $Id: vcdplayer.c,v 1.6 2004/07/25 17:42:22 mroi Exp $
+ $Id: vcdplayer.c,v 1.7 2004/12/29 09:23:56 rockyb Exp $
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -46,37 +46,37 @@
#include "vcdplayer.h"
#include "vcdio.h"
-#define LOG_ERR(this, s, args...) \
- if (this != NULL && this->log_err != NULL) \
- this->log_err("%s: "s, __func__ , ##args)
+#define LOG_ERR(p_vcdplayer, s, args...) \
+ if (p_vcdplayer != NULL && p_vcdplayer->log_err != NULL) \
+ p_vcdplayer->log_err("%s: "s, __func__ , ##args)
unsigned long int vcdplayer_debug = 0;
-static void _vcdplayer_set_origin(vcdplayer_input_t *this);
+static void _vcdplayer_set_origin(vcdplayer_t *p_vcdplayer);
/*!
Return true if playback control (PBC) is on
*/
bool
-vcdplayer_pbc_is_on(const vcdplayer_input_t *this)
+vcdplayer_pbc_is_on(const vcdplayer_t *p_vcdplayer)
{
- return VCDINFO_INVALID_ENTRY != this->cur_lid;
+ return VCDINFO_INVALID_ENTRY != p_vcdplayer->i_lid;
}
/* Given an itemid, return the size for the object (via information
previously stored when opening the vcd). */
static size_t
-_vcdplayer_get_item_size(vcdplayer_input_t *this, vcdinfo_itemid_t itemid)
+_vcdplayer_get_item_size(vcdplayer_t *p_vcdplayer, vcdinfo_itemid_t itemid)
{
switch (itemid.type) {
case VCDINFO_ITEM_TYPE_ENTRY:
- return this->entry[itemid.num].size;
+ return p_vcdplayer->entry[itemid.num].size;
break;
case VCDINFO_ITEM_TYPE_SEGMENT:
- return this->segment[itemid.num].size;
+ return p_vcdplayer->segment[itemid.num].size;
break;
case VCDINFO_ITEM_TYPE_TRACK:
- return this->track[itemid.num-1].size;
+ return p_vcdplayer->track[itemid.num-1].size;
break;
case VCDINFO_ITEM_TYPE_LID:
/* Play list number (LID) */
@@ -85,7 +85,7 @@ _vcdplayer_get_item_size(vcdplayer_input_t *this, vcdinfo_itemid_t itemid)
case VCDINFO_ITEM_TYPE_NOTFOUND:
case VCDINFO_ITEM_TYPE_SPAREID2:
default:
- LOG_ERR(this, "%s %d\n", _("bad item type"), itemid.type);
+ LOG_ERR(p_vcdplayer, "%s %d\n", _("bad item type"), itemid.type);
return 0;
}
}
@@ -139,7 +139,7 @@ _vcdplayer_get_item_size(vcdplayer_input_t *this, vcdinfo_itemid_t itemid)
%% : a %
*/
char *
-vcdplayer_format_str(vcdplayer_input_t *this, const char format_str[])
+vcdplayer_format_str(vcdplayer_t *p_vcdplayer, const char format_str[])
{
#define TEMP_STR_SIZE 256
#define TEMP_STR_LEN (TEMP_STR_SIZE-1)
@@ -148,7 +148,7 @@ vcdplayer_format_str(vcdplayer_input_t *this, const char format_str[])
char * tp = temp_str;
bool saw_control_prefix = false;
size_t format_len = strlen(format_str);
- vcdinfo_obj_t *obj = this->vcd;
+ vcdinfo_obj_t *p_vcdinfo = p_vcdplayer->vcd;
memset(temp_str, 0, TEMP_STR_SIZE);
@@ -168,25 +168,25 @@ vcdplayer_format_str(vcdplayer_input_t *this, const char format_str[])
saw_control_prefix = !saw_control_prefix;
break;
case 'A':
- add_format_str_info(vcdinfo_strip_trail(vcdinfo_get_album_id(obj),
+ add_format_str_info(vcdinfo_strip_trail(vcdinfo_get_album_id(p_vcdinfo),
MAX_ALBUM_LEN));
break;
case 'c':
- add_format_num_info(vcdinfo_get_volume_num(obj), "%d");
+ add_format_num_info(vcdinfo_get_volume_num(p_vcdinfo), "%d");
break;
case 'C':
- add_format_num_info(vcdinfo_get_volume_count(obj), "%d");
+ add_format_num_info(vcdinfo_get_volume_count(p_vcdinfo), "%d");
break;
case 'F':
- add_format_str_info(vcdinfo_get_format_version_str(obj));
+ add_format_str_info(vcdinfo_get_format_version_str(p_vcdinfo));
break;
case 'I':
{
- switch (this->play_item.type) {
+ switch (p_vcdplayer->play_item.type) {
case VCDINFO_ITEM_TYPE_TRACK:
strncat(tp, "Track", TEMP_STR_LEN-(tp-temp_str));
tp += strlen("Track");
@@ -216,9 +216,9 @@ vcdplayer_format_str(vcdplayer_input_t *this, const char format_str[])
break;
case 'L':
- if (vcdplayer_pbc_is_on(this)) {
+ if (vcdplayer_pbc_is_on(p_vcdplayer)) {
char num_str[20];
- snprintf(num_str, sizeof(num_str), " List ID %d", this->cur_lid);
+ snprintf(num_str, sizeof(num_str), " List ID %d", p_vcdplayer->i_lid);
strncat(tp, num_str, TEMP_STR_LEN-(tp-temp_str));
tp += strlen(num_str);
}
@@ -226,23 +226,23 @@ vcdplayer_format_str(vcdplayer_input_t *this, const char format_str[])
break;
case 'N':
- add_format_num_info(this->play_item.num, "%d");
+ add_format_num_info(p_vcdplayer->play_item.num, "%d");
break;
case 'p':
- add_format_str_info(vcdinfo_get_preparer_id(obj));
+ add_format_str_info(vcdinfo_get_preparer_id(p_vcdinfo));
break;
case 'P':
- add_format_str_info(vcdinfo_get_publisher_id(obj));
+ add_format_str_info(vcdinfo_get_publisher_id(p_vcdinfo));
break;
case 'S':
- if ( VCDINFO_ITEM_TYPE_SEGMENT==this->play_item.type ) {
- char seg_type_str[10];
+ if ( VCDINFO_ITEM_TYPE_SEGMENT==p_vcdplayer->play_item.type ) {
+ char seg_type_str[30];
snprintf(seg_type_str, sizeof(seg_type_str), " %s",
- vcdinfo_video_type2str(obj, this->play_item.num));
+ vcdinfo_video_type2str(p_vcdinfo, p_vcdplayer->play_item.num));
strncat(tp, seg_type_str, TEMP_STR_LEN-(tp-temp_str));
tp += strlen(seg_type_str);
}
@@ -250,15 +250,15 @@ vcdplayer_format_str(vcdplayer_input_t *this, const char format_str[])
break;
case 'T':
- add_format_num_info(this->cur_track, "%d");
+ add_format_num_info(p_vcdplayer->i_track, "%d");
break;
case 'V':
- add_format_str_info(vcdinfo_get_volumeset_id(obj));
+ add_format_str_info(vcdinfo_get_volumeset_id(p_vcdinfo));
break;
case 'v':
- add_format_str_info(vcdinfo_get_volume_id(obj));
+ add_format_str_info(vcdinfo_get_volume_id(p_vcdinfo));
break;
default:
@@ -271,13 +271,13 @@ vcdplayer_format_str(vcdplayer_input_t *this, const char format_str[])
}
static void
-_vcdplayer_update_entry(vcdinfo_obj_t *obj, uint16_t ofs, uint16_t *entry,
- const char *label)
+_vcdplayer_update_entry(vcdinfo_obj_t *p_vcdinfo, uint16_t ofs,
+ uint16_t *entry, const char *label)
{
if ( ofs == VCDINFO_INVALID_OFFSET ) {
*entry = VCDINFO_INVALID_ENTRY;
} else {
- vcdinfo_offset_t *off = vcdinfo_get_offset_t(obj, ofs);
+ vcdinfo_offset_t *off = vcdinfo_get_offset_t(p_vcdinfo, ofs);
if (off != NULL) {
*entry = off->lid;
dbg_print(INPUT_DBG_PBC, "%s: %d\n", label, off->lid);
@@ -287,107 +287,120 @@ _vcdplayer_update_entry(vcdinfo_obj_t *obj, uint16_t ofs, uint16_t *entry,
}
/*!
- Update next/prev/return/default navigation buttons (via this->cur_lid).
- Update size of play-item (via this->play_item).
+ Update next/prev/return/default navigation buttons
+ (via p_vcdplayer->i_lid). Update size of play-item
+ (via p_vcdplayer->play_item).
*/
void
-vcdplayer_update_nav(vcdplayer_input_t *this)
+vcdplayer_update_nav(vcdplayer_t *p_vcdplayer)
{
- int play_item = this->play_item.num;
- vcdinfo_obj_t *obj = this->vcd;
+ int play_item = p_vcdplayer->play_item.num;
+ vcdinfo_obj_t *p_vcdinfo = p_vcdplayer->vcd;
int min_entry = 1;
int max_entry = 0;
- if (vcdplayer_pbc_is_on(this)) {
+ if (vcdplayer_pbc_is_on(p_vcdplayer)) {
- vcdinfo_lid_get_pxd(obj, &(this->pxd), this->cur_lid);
+ vcdinfo_lid_get_pxd(p_vcdinfo, &(p_vcdplayer->pxd), p_vcdplayer->i_lid);
- switch (this->pxd.descriptor_type) {
+ switch (p_vcdplayer->pxd.descriptor_type) {
case PSD_TYPE_SELECTION_LIST:
case PSD_TYPE_EXT_SELECTION_LIST:
- if (this->pxd.psd == NULL) return;
- _vcdplayer_update_entry(obj, vcdinf_psd_get_prev_offset(this->pxd.psd),
- &(this->prev_entry), "prev");
+ if (p_vcdplayer->pxd.psd == NULL) return;
+ _vcdplayer_update_entry(p_vcdinfo,
+ vcdinf_psd_get_prev_offset(p_vcdplayer->pxd.psd),
+ &(p_vcdplayer->prev_entry), "prev");
- _vcdplayer_update_entry(obj, vcdinf_psd_get_next_offset(this->pxd.psd),
- &(this->next_entry), "next");
+ _vcdplayer_update_entry(p_vcdinfo,
+ vcdinf_psd_get_next_offset(p_vcdplayer->pxd.psd),
+ &(p_vcdplayer->next_entry), "next");
- _vcdplayer_update_entry(obj, vcdinf_psd_get_return_offset(this->pxd.psd),
- &(this->return_entry), "return");
-
- _vcdplayer_update_entry(obj,
- vcdinfo_get_default_offset(obj, this->cur_lid),
- &(this->default_entry), "default");
+ _vcdplayer_update_entry(p_vcdinfo,
+ vcdinf_psd_get_return_offset(p_vcdplayer->pxd.psd),
+ &(p_vcdplayer->return_entry), "return");
+
+ _vcdplayer_update_entry(p_vcdinfo,
+ vcdinfo_get_default_offset(p_vcdinfo,
+ p_vcdplayer->i_lid),
+ &(p_vcdplayer->default_entry), "default");
break;
case PSD_TYPE_PLAY_LIST:
- if (this->pxd.pld == NULL) return;
- _vcdplayer_update_entry(obj, vcdinf_pld_get_prev_offset(this->pxd.pld),
- &(this->prev_entry), "prev");
+ if (p_vcdplayer->pxd.pld == NULL) return;
+ _vcdplayer_update_entry(p_vcdinfo,
+ vcdinf_pld_get_prev_offset(p_vcdplayer->pxd.pld),
+ &(p_vcdplayer->prev_entry), "prev");
- _vcdplayer_update_entry(obj, vcdinf_pld_get_next_offset(this->pxd.pld),
- &(this->next_entry), "next");
+ _vcdplayer_update_entry(p_vcdinfo,
+ vcdinf_pld_get_next_offset(p_vcdplayer->pxd.pld),
+ &(p_vcdplayer->next_entry), "next");
- _vcdplayer_update_entry(obj, vcdinf_pld_get_return_offset(this->pxd.pld),
- &(this->return_entry), "return");
- this->default_entry = VCDINFO_INVALID_ENTRY;
+ _vcdplayer_update_entry(p_vcdinfo,
+ vcdinf_pld_get_return_offset(p_vcdplayer->pxd.pld),
+ &(p_vcdplayer->return_entry), "return");
+ p_vcdplayer->default_entry = VCDINFO_INVALID_ENTRY;
break;
case PSD_TYPE_END_LIST:
- this->origin_lsn = this->cur_lsn = this->end_lsn = VCDINFO_NULL_LSN;
+ p_vcdplayer->origin_lsn = p_vcdplayer->i_lsn = p_vcdplayer->end_lsn
+ = VCDINFO_NULL_LSN;
/* Fall through */
case PSD_TYPE_COMMAND_LIST:
- this->next_entry = this->prev_entry = this->return_entry =
- this->default_entry = VCDINFO_INVALID_ENTRY;
+ p_vcdplayer->next_entry = p_vcdplayer->prev_entry
+ = p_vcdplayer->return_entry = VCDINFO_INVALID_ENTRY;
+ p_vcdplayer->default_entry = VCDINFO_INVALID_ENTRY;
break;
}
-
- this->update_title();
+
+ if (p_vcdplayer->update_title)
+ p_vcdplayer->update_title();
return;
}
/* PBC is not on. Set up for simplified next, prev, and return. */
- switch (this->play_item.type) {
+ switch (p_vcdplayer->play_item.type) {
case VCDINFO_ITEM_TYPE_ENTRY:
case VCDINFO_ITEM_TYPE_SEGMENT:
case VCDINFO_ITEM_TYPE_TRACK:
- switch (this->play_item.type) {
+ switch (p_vcdplayer->play_item.type) {
case VCDINFO_ITEM_TYPE_ENTRY:
- max_entry = this->num_entries;
+ max_entry = p_vcdplayer->i_entries;
min_entry = 0; /* Can remove when Entries start at 1. */
- this->cur_track = vcdinfo_get_track(obj, play_item);
- this->track_lsn = vcdinfo_get_track_lsn(obj, this->cur_track);
+ p_vcdplayer->i_track = vcdinfo_get_track(p_vcdinfo, play_item);
+ p_vcdplayer->track_lsn = vcdinfo_get_track_lsn(p_vcdinfo,
+ p_vcdplayer->i_track);
break;
case VCDINFO_ITEM_TYPE_SEGMENT:
- max_entry = this->num_segments;
- this->cur_track = VCDINFO_INVALID_TRACK;
+ max_entry = p_vcdplayer->i_segments;
+ p_vcdplayer->i_track = VCDINFO_INVALID_TRACK;
break;
case VCDINFO_ITEM_TYPE_TRACK:
- max_entry = this->num_tracks;
- this->cur_track = this->play_item.num;
- this->track_lsn = vcdinfo_get_track_lsn(obj, this->cur_track);
+ max_entry = p_vcdplayer->i_tracks;
+ p_vcdplayer->i_track = p_vcdplayer->play_item.num;
+ p_vcdplayer->track_lsn = vcdinfo_get_track_lsn(p_vcdinfo,
+ p_vcdplayer->i_track);
break;
default: ; /* Handle exceptional cases below */
}
- _vcdplayer_set_origin(this);
+ _vcdplayer_set_origin(p_vcdplayer);
/* Set next, prev, return and default to simple and hopefully
useful values.
*/
if (play_item+1 >= max_entry)
- this->next_entry = VCDINFO_INVALID_ENTRY;
+ p_vcdplayer->next_entry = VCDINFO_INVALID_ENTRY;
else
- this->next_entry = play_item+1;
+ p_vcdplayer->next_entry = play_item+1;
if (play_item-1 >= min_entry)
- this->prev_entry = play_item-1;
+ p_vcdplayer->prev_entry = play_item-1;
else
- this->prev_entry = VCDINFO_INVALID_ENTRY;
+ p_vcdplayer->prev_entry = VCDINFO_INVALID_ENTRY;
- this->default_entry = play_item;
- this->return_entry = min_entry;
+ p_vcdplayer->default_entry = play_item;
+ p_vcdplayer->return_entry = min_entry;
break;
case VCDINFO_ITEM_TYPE_LID:
@@ -397,32 +410,32 @@ vcdplayer_update_nav(vcdplayer_input_t *this)
}
default: ;
}
- this->update_title();
+ p_vcdplayer->update_title();
}
/*!
Set reading to play an entire track.
*/
static void
-_vcdplayer_set_track(vcdplayer_input_t *this, unsigned int track_num)
+_vcdplayer_set_track(vcdplayer_t *p_vcdplayer, unsigned int i_track)
{
- if (track_num < 1 || track_num > this->num_tracks)
+ if (i_track < 1 || i_track > p_vcdplayer->i_tracks)
return;
else {
- vcdinfo_obj_t *obj = this->vcd;
+ vcdinfo_obj_t *p_vcdinfo = p_vcdplayer->vcd;
vcdinfo_itemid_t itemid;
- itemid.num = track_num;
- itemid.type = VCDINFO_ITEM_TYPE_TRACK;
- this->in_still = 0;
- this->cur_lsn = vcdinfo_get_track_lsn(obj, track_num);
- this->play_item = itemid;
- this->cur_track = track_num;
- this->track_lsn = this->cur_lsn;
+ itemid.num = i_track;
+ itemid.type = VCDINFO_ITEM_TYPE_TRACK;
+ p_vcdplayer->i_still = 0;
+ p_vcdplayer->i_lsn = vcdinfo_get_track_lsn(p_vcdinfo, i_track);
+ p_vcdplayer->play_item = itemid;
+ p_vcdplayer->i_track = i_track;
+ p_vcdplayer->track_lsn = p_vcdplayer->i_lsn;
- _vcdplayer_set_origin(this);
+ _vcdplayer_set_origin(p_vcdplayer);
- dbg_print(INPUT_DBG_LSN, "LSN: %u\n", this->cur_lsn);
+ dbg_print(INPUT_DBG_LSN, "LSN: %u\n", p_vcdplayer->i_lsn);
}
}
@@ -430,31 +443,32 @@ _vcdplayer_set_track(vcdplayer_input_t *this, unsigned int track_num)
Set reading to play an entry
*/
static void
-_vcdplayer_set_entry(vcdplayer_input_t *this, unsigned int num)
+_vcdplayer_set_entry(vcdplayer_t *p_vcdplayer, unsigned int num)
{
- vcdinfo_obj_t *obj = this->vcd;
- unsigned int num_entries = vcdinfo_get_num_entries(obj);
+ vcdinfo_obj_t *p_vcdinfo = p_vcdplayer->vcd;
+ const unsigned int i_entries = vcdinfo_get_num_entries(p_vcdinfo);
- if (num >= num_entries) {
- LOG_ERR(this, "%s %d\n", _("bad entry number"), num);
+ if (num >= i_entries) {
+ LOG_ERR(p_vcdplayer, "%s %d\n", _("bad entry number"), num);
return;
} else {
vcdinfo_itemid_t itemid;
- itemid.num = num;
- itemid.type = VCDINFO_ITEM_TYPE_ENTRY;
- this->in_still = 0;
- this->cur_lsn = vcdinfo_get_entry_lsn(obj, num);
- this->play_item = itemid;
- this->cur_track = vcdinfo_get_track(obj, num);
- this->track_lsn = vcdinfo_get_track_lsn(obj, this->cur_track);
- this->track_end_lsn = this->track_lsn +
- this->track[this->cur_track-1].size;
+ itemid.num = num;
+ itemid.type = VCDINFO_ITEM_TYPE_ENTRY;
+ p_vcdplayer->i_still = 0;
+ p_vcdplayer->i_lsn = vcdinfo_get_entry_lsn(p_vcdinfo, num);
+ p_vcdplayer->play_item = itemid;
+ p_vcdplayer->i_track = vcdinfo_get_track(p_vcdinfo, num);
+ p_vcdplayer->track_lsn = vcdinfo_get_track_lsn(p_vcdinfo,
+ p_vcdplayer->i_track);
+ p_vcdplayer->track_end_lsn = p_vcdplayer->track_lsn +
+ p_vcdplayer->track[p_vcdplayer->i_track-1].size;
- _vcdplayer_set_origin(this);
+ _vcdplayer_set_origin(p_vcdplayer);
dbg_print(INPUT_DBG_LSN, "LSN: %u, track_end LSN: %u\n",
- this->cur_lsn, this->track_end_lsn);
+ p_vcdplayer->i_lsn, p_vcdplayer->track_end_lsn);
}
}
@@ -462,61 +476,61 @@ _vcdplayer_set_entry(vcdplayer_input_t *this, unsigned int num)
Set reading to play an segment (e.g. still frame)
*/
static void
-_vcdplayer_set_segment(vcdplayer_input_t *this, unsigned int num)
+_vcdplayer_set_segment(vcdplayer_t *p_vcdplayer, unsigned int num)
{
- vcdinfo_obj_t *obj = this->vcd;
- segnum_t num_segs = vcdinfo_get_num_segments(obj);
+ vcdinfo_obj_t *p_vcdinfo = p_vcdplayer->vcd;
+ segnum_t i_segs = vcdinfo_get_num_segments(p_vcdinfo);
- if (num >= num_segs) {
- LOG_ERR(this, "%s %d\n", _("bad segment number"), num);
+ if (num >= i_segs) {
+ LOG_ERR(p_vcdplayer, "%s %d\n", _("bad segment number"), num);
return;
} else {
vcdinfo_itemid_t itemid;
- this->cur_lsn = vcdinfo_get_seg_lsn(obj, num);
- this->cur_track = 0;
+ p_vcdplayer->i_lsn = vcdinfo_get_seg_lsn(p_vcdinfo, num);
+ p_vcdplayer->i_track = 0;
- if (VCDINFO_NULL_LSN==this->cur_lsn) {
- LOG_ERR(this, "%s %d\n",
+ if (VCDINFO_NULL_LSN==p_vcdplayer->i_lsn) {
+ LOG_ERR(p_vcdplayer, "%s %d\n",
_("Error in getting current segment number"), num);
return;
}
itemid.num = num;
itemid.type = VCDINFO_ITEM_TYPE_SEGMENT;
- this->play_item = itemid;
+ p_vcdplayer->play_item = itemid;
- _vcdplayer_set_origin(this);
+ _vcdplayer_set_origin(p_vcdplayer);
- dbg_print(INPUT_DBG_LSN, "LSN: %u\n", this->cur_lsn);
+ dbg_print(INPUT_DBG_LSN, "LSN: %u\n", p_vcdplayer->i_lsn);
}
}
/* Play entry. */
/* Play a single item. */
static void
-vcdplayer_play_single_item(vcdplayer_input_t *this, vcdinfo_itemid_t itemid)
+vcdplayer_play_single_item(vcdplayer_t *p_vcdplayer, vcdinfo_itemid_t itemid)
{
- vcdinfo_obj_t *obj = this->vcd;
+ vcdinfo_obj_t *p_vcdinfo = p_vcdplayer->vcd;
dbg_print(INPUT_DBG_CALL, "called itemid.num: %d, itemid.type: %d\n",
itemid.num, itemid.type);
- this->in_still = 0;
+ p_vcdplayer->i_still = 0;
switch (itemid.type) {
case VCDINFO_ITEM_TYPE_SEGMENT:
{
vcdinfo_video_segment_type_t segtype
- = vcdinfo_get_video_type(obj, itemid.num);
- segnum_t num_segs = vcdinfo_get_num_segments(obj);
+ = vcdinfo_get_video_type(p_vcdinfo, itemid.num);
+ segnum_t i_segs = vcdinfo_get_num_segments(p_vcdinfo);
dbg_print(INPUT_DBG_PBC, "%s (%d), itemid.num: %d\n",
- vcdinfo_video_type2str(obj, itemid.num),
+ vcdinfo_video_type2str(p_vcdinfo, itemid.num),
(int) segtype, itemid.num);
- if (itemid.num >= num_segs) return;
- _vcdplayer_set_segment(this, itemid.num);
+ if (itemid.num >= i_segs) return;
+ _vcdplayer_set_segment(p_vcdplayer, itemid.num);
switch (segtype)
{
@@ -524,10 +538,10 @@ vcdplayer_play_single_item(vcdplayer_input_t *this, vcdinfo_itemid_t itemid)
case VCDINFO_FILES_VIDEO_NTSC_STILL2:
case VCDINFO_FILES_VIDEO_PAL_STILL:
case VCDINFO_FILES_VIDEO_PAL_STILL2:
- this->in_still = -5;
+ p_vcdplayer->i_still = STILL_READING;
break;
default:
- this->in_still = 0;
+ p_vcdplayer->i_still = 0;
}
break;
@@ -535,41 +549,41 @@ vcdplayer_play_single_item(vcdplayer_input_t *this, vcdinfo_itemid_t itemid)
case VCDINFO_ITEM_TYPE_TRACK:
dbg_print(INPUT_DBG_PBC, "track %d\n", itemid.num);
- if (itemid.num < 1 || itemid.num > this->num_tracks) return;
- _vcdplayer_set_track(this, itemid.num);
+ if (itemid.num < 1 || itemid.num > p_vcdplayer->i_tracks) return;
+ _vcdplayer_set_track(p_vcdplayer, itemid.num);
break;
case VCDINFO_ITEM_TYPE_ENTRY:
{
- unsigned int num_entries = vcdinfo_get_num_entries(obj);
+ unsigned int i_entries = vcdinfo_get_num_entries(p_vcdinfo);
dbg_print(INPUT_DBG_PBC, "entry %d\n", itemid.num);
- if (itemid.num >= num_entries) return;
- _vcdplayer_set_entry(this, itemid.num);
+ if (itemid.num >= i_entries) return;
+ _vcdplayer_set_entry(p_vcdplayer, itemid.num);
break;
}
case VCDINFO_ITEM_TYPE_LID:
- LOG_ERR(this, "%s\n", _("Should have converted this above"));
+ LOG_ERR(p_vcdplayer, "%s\n", _("Should have converted this above"));
break;
case VCDINFO_ITEM_TYPE_NOTFOUND:
dbg_print(INPUT_DBG_PBC, "play nothing\n");
- this->cur_lsn = this->end_lsn;
+ p_vcdplayer->i_lsn = p_vcdplayer->end_lsn;
return;
default:
- LOG_ERR(this, "item type %d not implemented.\n", itemid.type);
+ LOG_ERR(p_vcdplayer, "item type %d not implemented.\n", itemid.type);
return;
}
- this->play_item = itemid;
+ p_vcdplayer->play_item = itemid;
- vcdplayer_update_nav(this);
+ vcdplayer_update_nav(p_vcdplayer);
/* Some players like xine, have a fifo queue of audio and video buffers
that need to be flushed when playing a new selection. */
- /* if (this->flush_buffers)
- this->flush_buffers(); */
+ /* if (p_vcdplayer->flush_buffers)
+ p_vcdplayer->flush_buffers(); */
}
@@ -580,77 +594,77 @@ vcdplayer_play_single_item(vcdplayer_input_t *this, vcdinfo_itemid_t itemid)
"next" field of a LID which moves us to a different LID.
*/
static bool
-_vcdplayer_inc_play_item(vcdplayer_input_t *this)
+_vcdplayer_inc_play_item(vcdplayer_t *p_vcdplayer)
{
int noi;
- dbg_print(INPUT_DBG_CALL, "called pli: %d\n", this->pdi);
+ dbg_print(INPUT_DBG_CALL, "called pli: %d\n", p_vcdplayer->pdi);
- if ( NULL == this || NULL == this->pxd.pld ) return false;
+ if ( NULL == p_vcdplayer || NULL == p_vcdplayer->pxd.pld ) return false;
- noi = vcdinf_pld_get_noi(this->pxd.pld);
+ noi = vcdinf_pld_get_noi(p_vcdplayer->pxd.pld);
if ( noi <= 0 ) return false;
/* Handle delays like autowait or wait here? */
- this->pdi++;
+ p_vcdplayer->pdi++;
- if ( this->pdi < 0 || this->pdi >= noi ) return false;
+ if ( p_vcdplayer->pdi < 0 || p_vcdplayer->pdi >= noi ) return false;
else {
- uint16_t trans_itemid_num=vcdinf_pld_get_play_item(this->pxd.pld,
- this->pdi);
+ uint16_t trans_itemid_num=vcdinf_pld_get_play_item(p_vcdplayer->pxd.pld,
+ p_vcdplayer->pdi);
vcdinfo_itemid_t trans_itemid;
if (VCDINFO_INVALID_ITEMID == trans_itemid_num) return false;
vcdinfo_classify_itemid(trans_itemid_num, &trans_itemid);
dbg_print(INPUT_DBG_PBC, " play-item[%d]: %s\n",
- this->pdi, vcdinfo_pin2str (trans_itemid_num));
- vcdplayer_play_single_item(this, trans_itemid);
+ p_vcdplayer->pdi, vcdinfo_pin2str (trans_itemid_num));
+ vcdplayer_play_single_item(p_vcdplayer, trans_itemid);
return true;
}
}
void
-vcdplayer_play(vcdplayer_input_t *this, vcdinfo_itemid_t itemid)
+vcdplayer_play(vcdplayer_t *p_vcdplayer, vcdinfo_itemid_t itemid)
{
dbg_print(INPUT_DBG_CALL, "called itemid.num: %d itemid.type: %d\n",
itemid.num, itemid.type);
- if (!vcdplayer_pbc_is_on(this)) {
- vcdplayer_play_single_item(this, itemid);
+ if (!vcdplayer_pbc_is_on(p_vcdplayer)) {
+ vcdplayer_play_single_item(p_vcdplayer, itemid);
} else {
/* PBC on - Itemid.num is LID. */
- vcdinfo_obj_t *obj = this->vcd;
+ vcdinfo_obj_t *p_vcdinfo = p_vcdplayer->vcd;
- if (obj == NULL) return;
+ if (p_vcdinfo == NULL) return;
- this->cur_lid = itemid.num;
- vcdinfo_lid_get_pxd(obj, &(this->pxd), itemid.num);
+ p_vcdplayer->i_lid = itemid.num;
+ vcdinfo_lid_get_pxd(p_vcdinfo, &(p_vcdplayer->pxd), itemid.num);
- switch (this->pxd.descriptor_type) {
+ switch (p_vcdplayer->pxd.descriptor_type) {
case PSD_TYPE_SELECTION_LIST:
case PSD_TYPE_EXT_SELECTION_LIST: {
vcdinfo_itemid_t trans_itemid;
uint16_t trans_itemid_num;
- if (this->pxd.psd == NULL) return;
- trans_itemid_num = vcdinf_psd_get_itemid(this->pxd.psd);
+ if (p_vcdplayer->pxd.psd == NULL) return;
+ trans_itemid_num = vcdinf_psd_get_itemid(p_vcdplayer->pxd.psd);
vcdinfo_classify_itemid(trans_itemid_num, &trans_itemid);
- this->loop_count = 1;
- this->loop_item = trans_itemid;
- vcdplayer_play_single_item(this, trans_itemid);
+ p_vcdplayer->i_loop = 1;
+ p_vcdplayer->loop_item = trans_itemid;
+ vcdplayer_play_single_item(p_vcdplayer, trans_itemid);
break;
}
case PSD_TYPE_PLAY_LIST: {
- if (this->pxd.pld == NULL) return;
- this->pdi = -1;
- _vcdplayer_inc_play_item(this);
+ if (p_vcdplayer->pxd.pld == NULL) return;
+ p_vcdplayer->pdi = -1;
+ _vcdplayer_inc_play_item(p_vcdplayer);
break;
}
@@ -665,18 +679,19 @@ vcdplayer_play(vcdplayer_input_t *this, vcdinfo_itemid_t itemid)
/*
Set's start origin and size for subsequent seeks.
- input: this->cur_lsn, this->play_item
- changed: this->origin_lsn, this->end_lsn
+ input: p_vcdplayer->i_lsn, p_vcdplayer->play_item
+ changed: p_vcdplayer->origin_lsn, p_vcdplayer->end_lsn
*/
static void
-_vcdplayer_set_origin(vcdplayer_input_t *this)
+_vcdplayer_set_origin(vcdplayer_t *p_vcdplayer)
{
- size_t size = _vcdplayer_get_item_size(this, this->play_item);
+ size_t size = _vcdplayer_get_item_size(p_vcdplayer, p_vcdplayer->play_item);
- this->end_lsn = this->cur_lsn + size;
- this->origin_lsn = this->cur_lsn;
+ p_vcdplayer->end_lsn = p_vcdplayer->i_lsn + size;
+ p_vcdplayer->origin_lsn = p_vcdplayer->i_lsn;
- dbg_print((INPUT_DBG_CALL|INPUT_DBG_LSN), "end LSN: %u\n", this->end_lsn);
+ dbg_print((INPUT_DBG_CALL|INPUT_DBG_LSN), "end LSN: %u\n",
+ p_vcdplayer->end_lsn);
}
#define RETURN_NULL_BLOCK \
@@ -690,60 +705,60 @@ _vcdplayer_set_origin(vcdplayer_input_t *this)
return READ_STILL_FRAME
#define SLEEP_1_SEC_AND_HANDLE_EVENTS \
- if (this->handle_events()) goto skip_next_play; \
- this->sleep(250000); \
- if (this->handle_events()) goto skip_next_play; \
- this->sleep(250000); \
- if (this->handle_events()) goto skip_next_play; \
- this->sleep(250000); \
- if (this->handle_events()) goto skip_next_play; \
- this->sleep(250000);
-/* if (this->in_still) this->force_redisplay(); */
+ if (p_vcdplayer->handle_events()) goto skip_next_play; \
+ p_vcdplayer->sleep(250000); \
+ if (p_vcdplayer->handle_events()) goto skip_next_play; \
+ p_vcdplayer->sleep(250000); \
+ if (p_vcdplayer->handle_events()) goto skip_next_play; \
+ p_vcdplayer->sleep(250000); \
+ if (p_vcdplayer->handle_events()) goto skip_next_play; \
+ p_vcdplayer->sleep(250000);
+/* if (p_vcdplayer->i_still) p_vcdplayer->force_redisplay(); */
/* Handles PBC navigation when reaching the end of a play item. */
static vcdplayer_read_status_t
-vcdplayer_pbc_nav (vcdplayer_input_t *this, uint8_t *buf)
+vcdplayer_pbc_nav (vcdplayer_t *p_vcdplayer, uint8_t *buf)
{
/* We are in playback control. */
vcdinfo_itemid_t itemid;
- if (0 != this->in_still && this->in_still != -5) {
+ if (0 != p_vcdplayer->i_still && p_vcdplayer->i_still != STILL_READING) {
SLEEP_1_SEC_AND_HANDLE_EVENTS;
- if (this->in_still > 0) this->in_still--;
+ if (p_vcdplayer->i_still > 0) p_vcdplayer->i_still--;
return READ_STILL_FRAME;
}
/* The end of an entry is really the end of the associated
sequence (or track). */
- if ( (VCDINFO_ITEM_TYPE_ENTRY == this->play_item.type) &&
- (this->cur_lsn < this->track_end_lsn) ) {
+ if ( (VCDINFO_ITEM_TYPE_ENTRY == p_vcdplayer->play_item.type) &&
+ (p_vcdplayer->i_lsn < p_vcdplayer->track_end_lsn) ) {
/* Set up to just continue to the next entry */
- this->play_item.num++;
+ p_vcdplayer->play_item.num++;
dbg_print( (INPUT_DBG_LSN|INPUT_DBG_PBC),
- "continuing into next entry: %u\n", this->play_item.num);
- vcdplayer_play_single_item(this, this->play_item);
- this->update_title();
+ "continuing into next entry: %u\n", p_vcdplayer->play_item.num);
+ vcdplayer_play_single_item(p_vcdplayer, p_vcdplayer->play_item);
+ p_vcdplayer->update_title();
goto skip_next_play;
}
- switch (this->pxd.descriptor_type) {
+ switch (p_vcdplayer->pxd.descriptor_type) {
case PSD_TYPE_END_LIST:
return READ_END;
break;
case PSD_TYPE_PLAY_LIST: {
- int wait_time = vcdinf_get_wait_time(this->pxd.pld);
+ int wait_time = vcdinf_get_wait_time(p_vcdplayer->pxd.pld);
dbg_print(INPUT_DBG_PBC, "playlist wait_time: %d\n", wait_time);
- if (_vcdplayer_inc_play_item(this))
+ if (_vcdplayer_inc_play_item(p_vcdplayer))
goto skip_next_play;
/* Handle any wait time given. */
- if (-5 == this->in_still) {
+ if (STILL_READING == p_vcdplayer->i_still) {
if (wait_time != 0) {
- this->in_still = wait_time - 1;
+ p_vcdplayer->i_still = wait_time - 1;
SLEEP_1_SEC_AND_HANDLE_EVENTS ;
return READ_STILL_FRAME;
}
@@ -753,28 +768,28 @@ vcdplayer_pbc_nav (vcdplayer_input_t *this, uint8_t *buf)
case PSD_TYPE_SELECTION_LIST: /* Selection List (+Ext. for SVCD) */
case PSD_TYPE_EXT_SELECTION_LIST: /* Extended Selection List (VCD2.0) */
{
- int wait_time = vcdinf_get_timeout_time(this->pxd.psd);
- uint16_t timeout_offs = vcdinf_get_timeout_offset(this->pxd.psd);
- uint16_t max_loop = vcdinf_get_loop_count(this->pxd.psd);
+ int wait_time = vcdinf_get_timeout_time(p_vcdplayer->pxd.psd);
+ uint16_t timeout_offs = vcdinf_get_timeout_offset(p_vcdplayer->pxd.psd);
+ uint16_t max_loop = vcdinf_get_loop_count(p_vcdplayer->pxd.psd);
vcdinfo_offset_t *offset_timeout_LID =
- vcdinfo_get_offset_t(this->vcd, timeout_offs);
+ vcdinfo_get_offset_t(p_vcdplayer->vcd, timeout_offs);
dbg_print(INPUT_DBG_PBC, "wait_time: %d, looped: %d, max_loop %d\n",
- wait_time, this->loop_count, max_loop);
+ wait_time, p_vcdplayer->i_loop, max_loop);
/* Handle any wait time given */
- if (-5 == this->in_still) {
- this->in_still = wait_time - 1;
+ if (STILL_READING == p_vcdplayer->i_still) {
+ p_vcdplayer->i_still = wait_time - 1;
SLEEP_1_SEC_AND_HANDLE_EVENTS ;
return READ_STILL_FRAME;
}
/* Handle any looping given. */
- if ( max_loop == 0 || this->loop_count < max_loop ) {
- this->loop_count++;
- if (this->loop_count == 0x7f) this->loop_count = 0;
- vcdplayer_play_single_item(this, this->loop_item);
- if (this->in_still) this->force_redisplay();
+ if ( max_loop == 0 || p_vcdplayer->i_loop < max_loop ) {
+ p_vcdplayer->i_loop++;
+ if (p_vcdplayer->i_loop == 0x7f) p_vcdplayer->i_loop = 0;
+ vcdplayer_play_single_item(p_vcdplayer, p_vcdplayer->loop_item);
+ if (p_vcdplayer->i_still) p_vcdplayer->force_redisplay();
goto skip_next_play;
}
@@ -786,31 +801,32 @@ vcdplayer_pbc_nav (vcdplayer_input_t *this, uint8_t *buf)
itemid.num = offset_timeout_LID->lid;
itemid.type = VCDINFO_ITEM_TYPE_LID;
dbg_print(INPUT_DBG_PBC, "timeout to: %d\n", itemid.num);
- vcdplayer_play(this, itemid);
+ vcdplayer_play(p_vcdplayer, itemid);
goto skip_next_play;
} else {
- int num_selections = vcdinf_get_num_selections(this->pxd.psd);
+ int num_selections = vcdinf_get_num_selections(p_vcdplayer->pxd.psd);
if (num_selections > 0) {
/* Pick a random selection. */
- unsigned int bsn=vcdinf_get_bsn(this->pxd.psd);
+ unsigned int bsn=vcdinf_get_bsn(p_vcdplayer->pxd.psd);
int rand_selection=bsn +
(int) ((num_selections+0.0)*rand()/(RAND_MAX+1.0));
#if defined(LIBVCD_VERSION)
/* version 0.7.21 or greater */
- lid_t rand_lid=vcdinfo_selection_get_lid(this->vcd, this->cur_lid,
+ lid_t rand_lid=vcdinfo_selection_get_lid(p_vcdplayer->vcd,
+ p_vcdplayer->i_lid,
rand_selection);
#else
- lid_t rand_lid=vcdplayer_selection2lid (this, rand_selection);
+ lid_t rand_lid=vcdplayer_selection2lid (p_vcdplayer, rand_selection);
#endif /* LIBVCD_VERSION */
itemid.num = rand_lid;
itemid.type = VCDINFO_ITEM_TYPE_LID;
dbg_print(INPUT_DBG_PBC, "random selection %d, lid: %d\n",
rand_selection - bsn, rand_lid);
- vcdplayer_play(this, itemid);
+ vcdplayer_play(p_vcdplayer, itemid);
goto skip_next_play;
- } else if (this->in_still) {
+ } else if (p_vcdplayer->i_still) {
/* Hack: Just go back and do still again */
SLEEP_1_SEC_AND_HANDLE_EVENTS ;
RETURN_NULL_STILL ;
@@ -820,22 +836,22 @@ vcdplayer_pbc_nav (vcdplayer_input_t *this, uint8_t *buf)
break;
}
case VCDINFO_ITEM_TYPE_NOTFOUND:
- LOG_ERR(this, "NOTFOUND in PBC -- not supposed to happen\n");
+ LOG_ERR(p_vcdplayer, "NOTFOUND in PBC -- not supposed to happen\n");
break;
case VCDINFO_ITEM_TYPE_SPAREID2:
- LOG_ERR(this, "SPAREID2 in PBC -- not supposed to happen\n");
+ LOG_ERR(p_vcdplayer, "SPAREID2 in PBC -- not supposed to happen\n");
break;
case VCDINFO_ITEM_TYPE_LID:
- LOG_ERR(this, "LID in PBC -- not supposed to happen\n");
+ LOG_ERR(p_vcdplayer, "LID in PBC -- not supposed to happen\n");
break;
default:
;
}
/* FIXME: Should handle autowait ... */
- itemid.num = this->next_entry;
+ itemid.num = p_vcdplayer->next_entry;
itemid.type = VCDINFO_ITEM_TYPE_LID;
- vcdplayer_play(this, itemid);
+ vcdplayer_play(p_vcdplayer, itemid);
skip_next_play: ;
return READ_BLOCK;
}
@@ -845,52 +861,53 @@ vcdplayer_pbc_nav (vcdplayer_input_t *this, uint8_t *buf)
is to do something that's probably right or helpful.
*/
static vcdplayer_read_status_t
-vcdplayer_non_pbc_nav (vcdplayer_input_t *this, uint8_t *buf)
+vcdplayer_non_pbc_nav (vcdplayer_t *p_vcdplayer, uint8_t *buf)
{
/* Not in playback control. Do we advance automatically or stop? */
- switch (this->play_item.type) {
+ switch (p_vcdplayer->play_item.type) {
case VCDINFO_ITEM_TYPE_TRACK:
case VCDINFO_ITEM_TYPE_ENTRY:
- if (this->autoadvance && this->next_entry != VCDINFO_INVALID_ENTRY) {
- this->play_item.num=this->next_entry;
- vcdplayer_update_nav(this);
+ if (p_vcdplayer->autoadvance
+ && p_vcdplayer->next_entry != VCDINFO_INVALID_ENTRY) {
+ p_vcdplayer->play_item.num=p_vcdplayer->next_entry;
+ vcdplayer_update_nav(p_vcdplayer);
} else
return READ_END;
break;
case VCDINFO_ITEM_TYPE_SPAREID2:
/* printf("SPAREID2\n"); */
- if (this->in_still) {
+ if (p_vcdplayer->i_still) {
RETURN_NULL_STILL ;
/* Hack: Just go back and do still again */
- /*this->force_redisplay();
- this->cur_lsn = this->origin_lsn;*/
+ /*p_vcdplayer->force_redisplay();
+ p_vcdplayer->i_lsn = p_vcdplayer->origin_lsn;*/
}
return READ_END;
case VCDINFO_ITEM_TYPE_NOTFOUND:
- LOG_ERR(this, "NOTFOUND outside PBC -- not supposed to happen\n");
- if (this->in_still) {
+ LOG_ERR(p_vcdplayer, "NOTFOUND outside PBC -- not supposed to happen\n");
+ if (p_vcdplayer->i_still) {
RETURN_NULL_STILL ;
/* Hack: Just go back and do still again */
- /*this->force_redisplay();
- this->cur_lsn = this->origin_lsn;*/
+ /*p_vcdplayer->force_redisplay();
+ p_vcdplayer->i_lsn = p_vcdplayer->origin_lsn;*/
} else
return READ_END;
break;
case VCDINFO_ITEM_TYPE_LID:
- LOG_ERR(this, "LID outside PBC -- not supposed to happen\n");
- if (this->in_still) {
+ LOG_ERR(p_vcdplayer, "LID outside PBC -- not supposed to happen\n");
+ if (p_vcdplayer->i_still) {
RETURN_NULL_STILL ;
/* Hack: Just go back and do still again */
- /* this->force_redisplay();
- this->cur_lsn = this->origin_lsn; */
+ /* p_vcdplayer->force_redisplay();
+ p_vcdplayer->i_lsn = p_vcdplayer->origin_lsn; */
} else
return READ_END;
break;
case VCDINFO_ITEM_TYPE_SEGMENT:
- if (this->in_still) {
+ if (p_vcdplayer->i_still) {
/* Hack: Just go back and do still again */
RETURN_NULL_STILL ;
}
@@ -908,22 +925,24 @@ vcdplayer_non_pbc_nav (vcdplayer_input_t *this, uint8_t *buf)
interpret the next item in the playback-control list.
*/
vcdplayer_read_status_t
-vcdplayer_read (vcdplayer_input_t *this, uint8_t *buf, const off_t nlen)
+vcdplayer_read (vcdplayer_t *p_vcdplayer, uint8_t *buf,
+ const off_t nlen)
{
- this->handle_events ();
+ p_vcdplayer->handle_events ();
- if ( this->cur_lsn >= this->end_lsn ) {
+ if ( p_vcdplayer->i_lsn >= p_vcdplayer->end_lsn ) {
vcdplayer_read_status_t read_status;
- /* We've run off of the end of this entry. Do we continue or stop? */
+ /* We've run off of the end of p_vcdplayer entry. Do we continue or stop? */
dbg_print( (INPUT_DBG_LSN|INPUT_DBG_PBC),
- "end reached, cur: %u, end: %u\n", this->cur_lsn, this->end_lsn);
+ "end reached, cur: %u, end: %u\n",
+ p_vcdplayer->i_lsn, p_vcdplayer->end_lsn);
handle_item_continuation:
- read_status = vcdplayer_pbc_is_on(this)
- ? vcdplayer_pbc_nav(this, buf)
- : vcdplayer_non_pbc_nav(this, buf);
+ read_status = vcdplayer_pbc_is_on(p_vcdplayer)
+ ? vcdplayer_pbc_nav(p_vcdplayer, buf)
+ : vcdplayer_non_pbc_nav(p_vcdplayer, buf);
if (READ_BLOCK != read_status) return read_status;
}
@@ -938,27 +957,28 @@ vcdplayer_read (vcdplayer_input_t *this, uint8_t *buf, const off_t nlen)
*/
{
- CdIo *img = vcdinfo_get_cd_image(this->vcd);
+ CdIo *img = vcdinfo_get_cd_image(p_vcdplayer->vcd);
typedef struct {
- uint8_t subheader [8];
+ uint8_t subheader [CDIO_CD_SUBHEADER_SIZE];
uint8_t data [M2F2_SECTOR_SIZE];
uint8_t spare [4];
} vcdsector_t;
vcdsector_t vcd_sector;
do {
- dbg_print(INPUT_DBG_LSN, "LSN: %u\n", this->cur_lsn);
- if (cdio_read_mode2_sector(img, &vcd_sector, this->cur_lsn, true)!=0) {
+ dbg_print(INPUT_DBG_LSN, "LSN: %u\n", p_vcdplayer->i_lsn);
+ if (cdio_read_mode2_sector(img, &vcd_sector,
+ p_vcdplayer->i_lsn, true)!=0) {
dbg_print(INPUT_DBG_LSN, "read error\n");
return READ_ERROR;
}
- this->cur_lsn++;
+ p_vcdplayer->i_lsn++;
- if ( this->cur_lsn >= this->end_lsn ) {
+ if ( p_vcdplayer->i_lsn >= p_vcdplayer->end_lsn ) {
/* We've run off of the end of this entry. Do we continue or stop? */
dbg_print( (INPUT_DBG_LSN|INPUT_DBG_PBC),
"end reached in reading, cur: %u, end: %u\n",
- this->cur_lsn, this->end_lsn);
+ p_vcdplayer->i_lsn, p_vcdplayer->end_lsn);
break;
}
@@ -968,7 +988,7 @@ vcdplayer_read (vcdplayer_input_t *this, uint8_t *buf, const off_t nlen)
*/
} while((vcd_sector.subheader[2]&~0x01)==0x60);
- if ( this->cur_lsn >= this->end_lsn )
+ if ( p_vcdplayer->i_lsn >= p_vcdplayer->end_lsn )
/* We've run off of the end of this entry. Do we continue or stop? */
goto handle_item_continuation;
@@ -979,7 +999,7 @@ vcdplayer_read (vcdplayer_input_t *this, uint8_t *buf, const off_t nlen)
/* Do if needed */
void
-vcdplayer_send_button_update(vcdplayer_input_t *this, const int mode)
+vcdplayer_send_button_update(vcdplayer_t *p_vcdplayer, const int mode)
{
/* dbg_print(INPUT_DBG_CALL, "Called\n"); */
return;
@@ -989,22 +1009,23 @@ vcdplayer_send_button_update(vcdplayer_input_t *this, const int mode)
/* Older version of vcdimager. You really should consider using 0.7.21
or later as that has bug and memory leak fixes. */
lid_t
-vcdplayer_selection2lid (vcdplayer_input_t *this, int entry_num)
+vcdplayer_selection2lid (vcdplayer_t *p_vcdplayer, int entry_num)
{
- /* FIXME: Some of this probably gets moved to vcdinfo. */
+ /* FIXME: Some of p_vcdplayer probably gets moved to vcdinfo. */
/* Convert selection number to lid and then entry number...*/
unsigned int offset;
- unsigned int bsn=vcdinf_get_bsn(this->pxd.psd);
- vcdinfo_obj_t *obj = this->vcd;
+ unsigned int bsn=vcdinf_get_bsn(p_vcdplayer->pxd.psd);
+ vcdinfo_obj_t *p_vcdinfo = p_vcdplayer->vcd;
dbg_print( (INPUT_DBG_CALL|INPUT_DBG_PBC),
- "Called lid %u, entry_num %d bsn %d\n", this->cur_lid,
+ "Called lid %u, entry_num %d bsn %d\n", p_vcdplayer->i_lid,
entry_num, bsn);
if ( (entry_num - bsn + 1) > 0) {
- offset = vcdinfo_lid_get_offset(obj, this->cur_lid, entry_num-bsn+1);
+ offset = vcdinfo_lid_get_offset(p_vcdinfo, p_vcdplayer->i_lid,
+ entry_num-bsn+1);
} else {
- LOG_ERR(this, "Selection number %u too small. bsn %u\n",
+ LOG_ERR(p_vcdplayer, "Selection number %u too small. bsn %u\n",
entry_num, bsn);
return VCDINFO_INVALID_LID;
}
@@ -1015,21 +1036,21 @@ vcdplayer_selection2lid (vcdplayer_input_t *this, int entry_num)
switch (offset) {
case PSD_OFS_DISABLED:
- LOG_ERR(this, "Selection %u disabled\n", entry_num);
+ LOG_ERR(p_vcdplayer, "Selection %u disabled\n", entry_num);
return VCDINFO_INVALID_LID;
case PSD_OFS_MULTI_DEF:
- LOG_ERR(this, "Selection %u multi_def\n", entry_num);
+ LOG_ERR(p_vcdplayer, "Selection %u multi_def\n", entry_num);
return VCDINFO_INVALID_LID;
case PSD_OFS_MULTI_DEF_NO_NUM:
- LOG_ERR(this, "Selection %u multi_def_no_num\n", entry_num);
+ LOG_ERR(p_vcdplayer, "Selection %u multi_def_no_num\n", entry_num);
return VCDINFO_INVALID_LID;
default: ;
}
- ofs = vcdinfo_get_offset_t(obj, offset);
+ ofs = vcdinfo_get_offset_t(p_vcdinfo, offset);
if (NULL == ofs) {
- LOG_ERR(this, "error in vcdinfo_get_offset\n");
+ LOG_ERR(p_vcdplayer, "error in vcdinfo_get_offset\n");
return -1;
}
dbg_print(INPUT_DBG_PBC,
@@ -1038,7 +1059,7 @@ vcdplayer_selection2lid (vcdplayer_input_t *this, int entry_num)
return ofs->lid;
} else {
- LOG_ERR(this, "invalid or unset entry %u\n", entry_num);
+ LOG_ERR(p_vcdplayer, "invalid or unset entry %u\n", entry_num);
return VCDINFO_INVALID_LID;
}
}