When using this document, keep the following in mind:ntialGeneral Notice

1. This document is confidential. By accepting this document you acknowledge that you are boundby the terms set forth in the nondisclosure and confidentiality agreement signed separately and in
the possession of SEGA. If you have not signed such a nondisclosure agreement, please contact
SEGA immediately and return this document to SEGA.

de2. This document may include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new versions of the
document. SEGA may make improvements and/or changes in the product(s) and/or the
program(s) described in this document at any time.

nfi

3. No one is permitted to reproduce or duplicate, in any form, the whole or part of this document
without SEGA’s written permission. Request for copies of this document and for technicalinformation about SEGA products must be made to your authorized SEGA Technical Services
representative.
4. No license is granted by implication or otherwise under any patents, copyrights, trademarks, orother intellectual property rights of SEGA Enterprises, Ltd., SEGA of America, Inc., or any third party.

Co

5. Software, circuitry, and other examples described herein are meant merely to indicate the characteristics and performance of SEGA’s products. SEGA assumes no responsibility for any intellectual
property claims or other problems that may result from applications based on the examples
described herein.

GA

6. It is possible that this document may contain reference to, or information about, SEGA products(development hardware/software) or services that are not provided in countries other than Japan.
Such references/information must not be construed to mean that SEGA intends to provide such
SEGA products or services in countries other than Japan. Any reference of a SEGA licensed product/program in this document is not intended to state or imply that you can use only SEGA’slicensed products/programs. Any functionally equivalent hardware/software can be used instead.
7. SEGA will not be held responsible for any damage to the user that may result from accidents or any
other reasons during operation of the user’s equipment, or programs according to this document.

SE

NOTE: A reader's comment/correction form is provided with thisdocument. Please address comments to :(11/2/94- 002)

SEGA of America, Inc., Developer Technical Support (att. Evelyn Merritt)
150 Shoreline Drive, Redwood City, CA 94065
SEGA may use or distribute whatever information you supply in any way
it believes appropriate without incurring any obligation to you.

SE

GA

Co

nfi

de

nti
al

TM

Branching
Playback Library
User's ManualDoc. # ST-136-D-R2-082495© 1995 SEGA. All Rights Reserved.

nti
al

READER CORRECTION/COMMENT SHEETKeep us updated!
If you should come across any incorrect or outdated information while reading through the attacheddocument, or come up with any questions or comments, please let us know so that we can make therequired changes in subsequent revisions. Simply fill out all information below and return this form to
the Developer Technical Support Manager at the address below. Please make more copies of this form if
more space is needed. Thank you.
General Information:

Phone

de

Your Name
Document number

ST-136-D-R2-082495

Document nameBranching Playback Library User's Manual

Date

Corrections:
Correction

nfi

pg. #

GA

Co

Chpt.

SE

Questions/comments:

Fax:

Where to send your corrections:(415) 802-1717
Attn: Evelyn Merritt,
Developer Technical Support

Mail:

SEGA OF AMERICA
Attn: Evelyn Merritt,
Developer Technical Support
150 Shoreline Dr.
Redwood City, CA 94065

nti
al

1. Overview

The Branching Playback Library (BPL) enables seamless reading of data streams, basedon a pre-defined scenario. This allows the system to branch between streams smoothly
during reads.

de

The BPL, however, manages only the data streams that are necessary for branching.
Use a decode-only library such as MPEG and Cinepak in conjunction with BPL to playback data such as audio and video.

1.1 Organization of the Library
Figure 1.1 shows the organization of CD-related libraries.

Cinepak
Library(CPK)

Branching
Playback
Library (BPL)

Co

MPEG
Library(MPG)

nfi

Application

File System(GFS)

Stream System (STM)

CD Communication Interface (CDC)

HardwareGA

SoftwareSE

Figure 1.1

CD Block

SIMM,
SCSI File

Organization of CD-related libraries

The Branching Playback Library requires each of the following libraries: Stream System, File System, and CD Communication Interface.

41. Setting the Branch Destination (Scenario) Informationnti
al

1.2 Summary of Branching Playback Library Functions
This function sets destination stream candidates as destination (scenario) information.
2. Pre-reading the Streams Necessary for Branching

3. Destination Selection FunctiondeThe BPL manages the opening/closing of streams to smoothly branch between streams.
By pre-reading an open stream (a branching destination stream candidate) into the CD
buffer, the stream can be fetched without interruption when the branch destination isdetermined.

The BPL selects the actual destination from the destination candidates.
4. Destination Stream Notification Function

nfi

Based on the selected destination, the BPL notifies the application of the next stream tobe played.

Set initialization and destination information

BPL

Co

Select adestination

Application

Stream handle

STM_Open, STM_Close

Create, EntryNext

Decoder (Cinepak, MPEG, etc.)

GA

Stream System

Stream system overview diagram

SE

Figure 1.2

Branching Playback Library User's Manual52.1 Definitions
Table 2.1

Terminology
Term

Meaning

Branch stream

Equivalent to a file on a CD. The BPL reads a stream
based on a scenario that is set for a branch stream.

Branch number

List of abbreviations

Abbreviation

Meaningbranch playbranch stream
branch stream ID
branch No.
branch stream max

brmax

branch max

Description

branching playbackbranch stream
branch stream ID
branch No.
Total number of branch
streams
Total number of branches

Co

BPL
bstm
bstmidbrno
bstmmaxnfi

deDifferent types of stream data (e.g., audio, video) can
be fetched by performing channel-interleaving within abranch stream (normally, interleaving by means of asubheader).
This ID identifies the branch stream. Given this ID, theread file, stream key, or destination information can be
set or fetched.
This number specifies the branch destination.
Equivalent to the event types such as input from acontrol pad.

Branch stream ID

Table 2.2ntial

2. Basic Items

Other terms that appear in this manual are based on the CD Communication Interface,
the File System, and the Stream System Libraries.

GA

2.2 Restrictions on Names
The BPL uses the following function, variable, type, and macro names:
Function/variable name: BP~ and bp~
Type name:
Bp~
Macro name:BP~The libraries required by the BPL use the following global symbols:
Symbol names and libraries

SE

Table 2.3

Library Name

Stream System
File System
CD Communication Interface

SymbolST~, st~, St~
GF~, gf~, Gf~
CD~, cd~, Cd~

These symbols must not be used by the application program.

6

nti
al

3. How the BPLWorks
3.1 Flow of Processing
The BPL reads a stream according to a given scenario and notifies the application of thestream handle that must be decoded.

Sets a scenario(BPL_SetStmInfo
BPL_SetBranchInfo)

Specifies a work area

Sets branch stream information and destination
information.

nfi

Initialization (BPL_Init)deFigure 3.1 shows the flow of main processing events.

Co

Selects a destination(BPL_SelectBranch)GA

BPL server execution(BPL_ExecServer)

Fetches a branch stream(BPL_GetCurStm
BPL_GetNextStm)

Flow of processing

SE

Figure 3.1

A
p
p
l
i
c
a
t
i
o
n

Branching Playback Library User's Manual

7

nti
al

3.2 Scenario
A scenario is information that indicates how branching playback is to be performed as afunction of time (the order in which streams are to be played).
Branched streams are specified in file units. Audio and video data can be fetched bychannel-interleaving within a file.
Branch Number

bstm1

bstm16

bstm6

bstm2

bstm7
bstm8
bstm9

1

bstm3

bstm102

bstm11
bstm12
bstm4
bstm133

Figure 3.2

bstm19bstm18nfi

bstm14
bstm15

bstm5

bstm17de

0

Stream-branchingThis scenario specifies bstm1 as the branch stream to be read first. The BPL thenstarts reading bstm1.

(b)

The application fetches the branch stream that is currently being read and sets it in
the decoder.

(c)After reading bstm1, the BPL begins reading branch candidates (branch streams
that may be fetched next) bstm2, bstm3, bstm4, and bstm5. Effective use of the CD
buffer and smoother branching is made possible by pre-reading branch candidate
streams.

GA

Co

(a)

(d) The application fetches events such as input from a control pad and selects thedestination for branching. If branch numbers 0~3 are assigned to branches bstm2,
bstm3, bstm4, and bstm5, and if 1 is specified, reading of bstm2, bstm4 and bstm5,
which is no longer needed, is canceled. If necessary, the application fetches thedestination stream and sets it in the decoder.
After fetching bstm1, the BPL begins fetching bstm3.
If the application specifies the execution of branching to the Branch Play Server,
the BPL begins reading bstm9, bstm10, and bstm11, as in (c).

SE

(e)

8

Table 3.1

Branching playback statesnti
al

3.3 Changing Branching Playback States
Table 3.1 shows branching playback states. Figure 3.1 shows a branching playback
state transition diagram.

State

Description

End of branching
playback

Branching playback ended.
The stream group and the streams that were opened by the
BPL (the current stream and candidate streams ) are all
closed.
Branch candidates were pre-read, but a destination has notbeen selected.
All streams among the branch candidates are subject to prereading. Only the current stream can be accessed. Destination
streams cannot be accessed.
A destination was selected from the branch candidates.
Only the selected destination is pre-read.
Both the current stream and the destination stream can beaccessed.
There are no branch candidates or destinations for the current
stream. The last stream is being played.

Determine
destination
No destination

nfi

de

Wait for a
destination
selection

The server function can get the branching playback status.
Initialize branching
playback

ON/OFFCo

BPL_Init function

Branching playback
complete(BPL_SVR_COMPLETED)BPL_SetStart function

Stop branching
playback

BPL_SetStart function
specifies BPL_BR_NONE

ON

Executable in all states
ON

Wait for the selection

No destination(BPL_SVR_WAITSEL)(BPL_SVR_NOBRN)

GA

OFF

Reset branching
playback

BPL_Reset function

No candidates

OFF

BPL_SelBranch function

ON

OFF

Destination selected

SE(BPL_SVR_SELECT)• ON/OFF:The selected destination was BPL_BR_NONE.
(See the BPL_SetBranchInfo function.)

Branch execution switch for the Branching Playback Server function BPL_ExecServer.
If ON is specified in a destination selection wait or no destination state, then branching
playback is terminated.
If ON is specified in the selected selected state, then branch streams are changed.

Figure 3.3

BP state transition diagram

Branching Playback Library User's Manual

9Executing branching
When branching is performed in the destination selected state (by turning on the
branch execution switch of the Branching Playback Server), branch streams are
switched as follows:
(a)
(b)
(c)

The current stream, A, is closed.
(The BPL stops reading A and deletes any data that remains in the CD buffer.)
The destination stream, B, becomes the current stream.
The destination stream becomes undefined.

Table 3.2

Switching branch streams by executing branching

Branch Stream

BeforeBranchingA
B

B(A is closed)
Undefined until the next destination is
selected and determined by the
BPL_SelectBranch function

nfi

Current stream (obtained by the
BPL_GetCurStm function)
Destination stream (obtained by
the BPL_GetNextStm function)

After Branching (after switching)

de

(1)

nti
al

3.4 Executing Branching (Branch Stream-Switching)

The selection of a destination always precedes the execution of branching (switching).
However, the selection and switching operations are generally performed asynchronously.

(a)
(b)
(c)
(d)
(e)

(3)

Co

Opening and closing a stream
The BPL opens both the current stream and branch candidate streams. The BPL
employs the following opening and closing procedures:Starting playback stream specified by the BPL_SetStart function is opened first as thecurrent stream.
When the reading of the current stream begins, branch candidate streams are opened.
When a destination is selected, all other branch candidates are closed, and only the destination is pre-read.
When branching is executed, the current stream is closed.
The destination stream becomes the current stream, and steps(b)~(d) are repeated.
When branching playback is completed, the stream group is closed.

Timing for branch stream-switching
Table 3.3 shows the timing types for branch stream-switching.

GA

(2)

Table 3.3

Timing for branch stream-switching
Description

NaturalswitchingForced switching

Switches to destination stream B upon completion of decoding
stream A.
Force switch to destination stream B regardless of whether
stream A is being decoded.

SE

TimingBranching must not be executed until the decoder finishes processing the current stream;even when a destination is determined (to prevent truncation of the stream data that isbeing decoded).
Regardless of whether normal or forced switching is performed, switching processes forthe decoder should be executed first. The branch execution switch should be turned on
only after switching is complete.
10

nti
al

4. Organization of Files on DiscThe total amount of streams that can be pre-read is limited by the capacity of the CD
buffer (a maximum of 200 sectors). Therefore, streams that exceed the limit and can not
be pre-read may result in branching delays.
1. Non-interleaved branch candidates

Suppose that A’s branch candidates are B and C and that files are positioned on disc as
shown in Figure 4.1. Then, only file B can be pre-read.

Position of files on disk

Stream branchingA

deThere will be no problems if the pre-read data of A is sufficient to seek/branch to B or
C. However, if both B and C need to be pre-read in order to enable delayed branch
selection timing, branching to C in this example cannot be performed without delay.

B
C

B

C

nfi

A

200 or more sectors

Figure 4.1 Non-interleaved candidate branches (C cannot be pre-read)Co

2. Interleaved branch candidates

As shown in Figure 4.2, one method of enabling branches to B and C without delay after
A is played is to interleave B and C immediately after A.
Stream branchingA

Organization of files on disk

B (b1+b2+b3...)A

b1 c1 b2 c2 b3 c3......

GA

C (c1+c2+c3...)

B and C are interleaved

Note: Two branch candidate files exist: B and C.

SE

Figure 4.2 Interleaved branch candidates (all of B and C)

3. Partially interleaved branch candidates

As shown in Figure 4.3, it is also possible to split B into B1 and B2, and C into C1 and C2
and to interleave only B1 and C1.

Branching Playback Library User's Manual

11

nti
al

In this case, it is sufficient to interleave only parts of B and C (B1 and C1). This
technique allows a seek to B2 and C2 and enables highly independent operation.
However, the technique requires the division of files.

Stream branchingA

Position of files on disk

B1 -- B2A

B1, C1C1 -- C2

B2

C2

de

B1 and C1 are interleaved
Note: Four branch candidate files exist: B1, B2, C1, and C2.

nfi

Partially-interleaved branch candidates (parts of B and C)

SE

GA

Co

Figure 4.3

12

nti
al

5. Basic Examples
5.1 Scenario Processing
Figure 5.1 shows an example of a branching playback scenario.
Branch number
0

BSTM2.MPG

Button B

1

BSTM3.MPGde

Button A
BSTM1.MPG

Button A is pressed while BSTM1.MPG is being played →BSTM2.MPG is played after BSTM1.MPG.
Button B is pressed while BSTM1.MPG is being played →BSTM3.MPG is played after BSTM1.MPG.

Figure 5.1

Example of a branching playback scenario

3#define BRANCH_MAX

2#define KEY_MAX#define A_BTN#define B_BTN#define BR_NUM#define BSTM1_ID#define BSTM2_ID#define BSTM3_ID

2
0
1
2
0
1
2

/* Total number of branch streams(BSTM1.MPG,
BSTM2.MPG, BSTM3.MPG) *//* Total number of branches (number of arrows in
Figure 5.1) *//* Total number of stream key types *//* Branch number assigned to button A *//* Branch number assigned to button B *//* Number of branches per stream *//* Branch stream ID of BSTM1.MPG *//* Branch stream ID of BSTM2.MPG *//* Branch stream ID of BSTM3.MPG */Co#define BSTM_MAXnfi

The following is a sample program that sets this scenario.

/* Work area for the BPL */Sint32 work_bpl[BPL_WORK_SIZE(BSTM_MAX, BRANCH_MAX, KEY_MAX)/sizeof(Sint32)];
setScenario(void)

GA

void
{

StmKeySint32
Sint32

key[KEY_MAX];
brtbl[BR_NUM];
fid;/* Area for setting a stream key *//* Area for setting a destination *//* File ID *//* Initialization of branching playback */BPL_Init(BSTM_MAX, BRANCH_MAX, KEY_MAX, work_bpl);

SE/* Setting branch stream information */STM_KEY_CN(key + 0) = STM_KEY_CIMSK(key + 0) = STM_KEY_NONE;
STM_KEY_CN(key + 1) = STM_KEY_CIMSK(key + 1) = STM_KEY_NONE;
STM_KEY_SMMSK(key + 0) = STM_KEY_SMVAL(key + 0) = STM_SM_VIDEO;
STM_KEY_SMMSK(key + 1) = STM_KEY_SMVAL(key + 1) = STM_SM_AUDIO;
fid = GFS_NameToId(“BSTM1.MPG”);
BPL_SetStmInfo(BSTM1_ID, fid, KEY_MAX, key);fid = GFS_NameToId(“BSTM2.MPG”);

Branching Playback Library User's Manual13

/* Set destination information */brtbl[A_BTN] = BSTM2_ID;
brtbl[B_BTN] = BSTM3_ID;
BPL_SetBranchInfo(BSTM1_ID, BR_NUM, brtbl);/* Branch to BSTM2.MPG
if button A is pressed *//* Branch to BSTM3.MPG
if button B is pressed *//* Set the destination for
BSTM1.MPG */

SE

GA

Co

nfi

de

}

nti
al

BPL_SetstmInfo(BSTM2_ID, fid, KEY_MAX, key);fid = GFS_NameTold("BSTM3.MPG");
BPL_SetStmInfo(BSTM3_ID, fid, KEY_MAX, key);

14

nti
al

5.2
Branching Playback Processing
The following is an example of a branching playback program. (Refer to Section 5.1 forthe scenario.)deSint32
work_gfs[GFS_WORK_SIZE(BSTM_MAX*KEY_MAX)/sizeof(Sint32)];
Sint32
work_stm[STM_WORK_SIZE(GRP_MAX, BSTM_MAX*KEY_MAX)/sizeof(Sint32)];
Sint32brno;/* Branch number */StmHn
stmtbl[KEY_MAX];/* Stream handle table */Sint32
bpl_stat;/* Branching playback status */Sint32
decode_stat;/* Decoder operation status */DecodeHn dc_hn = NULL;/* Decoder handle */Boolchgsw = OFF;/* Branch execution switch */Bool
endflag = FALSE;
Sint32ret;

nfi/* Initialization of the libraries */GFS_Init(···);/* Initialize the File System */STM_Init(···);/* Initialize the Stream System */initDecoder();/* Initialize the decoder */setScenario();/* Set a scenario (see 5.1) */Co/* Branching playback */BPL_SetStart(BSTM1_ID);/* Specify a stream to begin playback*/
BPL_GetCurStm(KEY_MAX, stmtbl);/* Fetch the first branch stream */dc_hn = createDecodeHn(stmtbl);/* Create a decoder handle */while (endflag == FALSE) {bpl_stat = BPL_ExecServer(chgsw);/* Execute the Branching Playback
Server */chgsw = OFF;STM_ExecServer();/* Execute the stream server */decode_stat = execDecoder(dc_hn);/* Execute the server function of
the decoder *//* Branching playback complete status */GA

switch (bpl_stat) {case BPL_SVR_COMPLETED:
endflag = TRUE;
break;
case BPL_SVR_WAITSEL:SE/* Destination selection waitstate *//* Get pad input (0:button A, 1:button B, negative: no input */brno = getPadEvent();
if (brno >= 0) {BPL_SelectBranch(brno);/* Select a destination */}break;
case BPL_SVR_SELECT:/* Destination determined state */case BPL_SVR_NOBRN:/* No-destination state */if (decode_stat != COMPLETED) { /* Decoding completion check */break;}

Branching Playback Library User's Manual

15

}
}
destoroyDecodeHn(dc_hn);ntialchgsw = ON;/* Branch execution switch on */ret = BPL_GetNextStm(KEY_MAX, stmtbl); /* Get a destination stream */if (ret >= 0) {/* If there is a destination */destoroyDecodeHn(dc_hn);/* Clear the decoder handle */dc_hn = createDecodeHn(stmtbl);/* Create a decoder handle */}break;/* Clear the decoder handle */

SE

GA

Co

nfi

de

The BPL automatically opens and closes a stream by using the Stream System. For a
description of the decoder, refer to the applicable library manuals.

16

6.1 Basic Data
Title
Data specifications

Data
Basic data

Data Name

1. Basic Data Types
Type

Descripton

ntial

6. Data Specifications

No.
1.0

2. Logical Constants
Constant

Value

nfi

Logical constants are used as Boolean values:deUnsigned 1-byte integer
Signed 1-byte integer
Unsigned 2-byte integer
Signed 2-byte integer
Unsigned 4-byte integer
Signed 4-byte integer
Boolean 4-byte integer (logical constants are used as Boolean)

Uint8
Sint8
Uint16
Sint16
Uint32
Sint32
Bool

Description

0
1

Represents the FALSE logical value.
Represents the TRUE logical value.

OFF
ON

0
1

Represents the switch off (FALSE) state.
Represents the switch on (TRUE) state.

6.2 Constants
Title
Data
Data specifications Constant

Co

FALSE
TRUE

Data Name

No.
2.0

GA

1. Error Codes
The value of BPL_ERR_OK is 0. Other error codes take negative values.
ConstantSE

BPL_ERR_OK
BPL_ERR_KYOVRFLW
BPL_ERR_BROVRFLW
BPL_ERR_BSTMID
BPL_ERR_BRNO
BPL_ERR_BRSPCBPL_ERR_NOKEY
BPL_ERR_OPNSTM

Description

Normal termination
Too many stream keys
Too many destination settings
Illegal branch stream ID
Illegal branch number
Destination already specified
No corresponding stream key set
Stream open failure

2. OtherConstant

BPL_STMKEY_MAX

Value

Description

6

Number of stream keys that can be set to a branch
stream.

Branching Playback Library User's Manual

17

nti
al

7. Function Specifications
Table 7.1 shows a list of BPL functions.
Table 7.1

List of functions (1)Function

Function NamedeBPL_Init
BPL_Reset
BPL_SetStmInfo
BPL_GetStmInfo
BPL_SetBranchInfo
BPL_GetBranchInfo

nfi

BPL_SetStart
BPL_ExecServer
BPL_SelectBranch
BPL_GetCurStm
BPL_GetNextStm
BPL_GetStmGrp

SE

GA

Co

Scenario processing
Initialize branching playback
Reset branching playback
Set branch stream information
Get branch stream information
Set destination information
Get destination information
Branching playback-processing
Set playback start stream
Execute Branching Playback Server
Select destination
Get current stream
Get destination stream
Get stream group

18

No.

1.0
1.1
1.2
1.3
1.4
1.5
1.6
2.0
2.1
2.2
2.3
2.4
2.5
2.6

TitleData specifications

Data
Initialize branching playback[Format]Data NameBPL_Initnti
al

7.1 Scenario Processing
No.
1.1

Sint32 BPL_Init(Sint32 bstmmax, Sint32 brmax, Sint32
keymax, void *work)
bstmmax: Total number of branch streams
brmax:
Total number of branches
keymax:Total number of stream key types
work:
Work area
None
Error code
Initializes the work area for the BPL. Clears previously set scenario information.
Execute this function before the BPL is used.
(a)Determine the size of the work area from the BPL_WORK_SIZE (bstmmax,
brmax, keymax) byte.
Allocate work areas at 4-byte boundaries.
Example: Uint32 work[BPL_WORK_SIZE(bstmmax, brmax,
keymax)/sizeof(Uint32)];(b) When stream keys of different types are assigned to different branch
streams, the sum of the types is the value of keymax.
Example:If key1 (3 types of keys) is assigned to bstm1, and key2
(4 types of keys) is assigned to bstm2, then keymax,
which is the sum of key1 and key2, will be 7.
If key1 is assigned to both bstm1 and bstm2, thenkeymax, which is key1, will be 3.
(c)
The BPL_Init function does not close the stream group that is currently
used. To force an initialization of the BPL while it is being used, execute the
BPL_Reset function.

[Input]de[Output][Function value][Function]

Title
Data specifications

Co

nfi

[Remarks]

Data
Reset branching playback

No.
1.2

Sint32 BPL_Reset(void)
None
None
Error code
Suspends access to a branch stream and resets the branching playback (closes thestream group currently being used by the BPL and initializes all information).

SE

GA[Format][Input][Output][Function value][Function]

Data NameBPL_Reset

Branching Playback Library User's Manual

19

Data
Set branch stream information[Format]No.
1.3

Sint32 BPL_SetStmInfo(Sint32 bstmid, Sint32 fid, Sint32
nkey, StmKey *keytbl)
bstmid: Branch stream ID (0≤bstmid<bstmmax)
fid:
File ID
nkey:
Number of stream keys (nkey≤BPL_STMKEY_MAX)
keytbl:Stream key table
None
Error code
Assigns branch stream information (information on the individual streams thatare actually read) to a branch stream.
(a)
By assigning multiple stream keys to a file, the function can read channelinterleaved-data.
(b) The maximum number of stream keys that can be assigned to a branch
stream is BPL_STMKEY_MAX.
The BPL_Init function specifies the total number of stream key types thatcan be used in all streams.

[Input][Remarks]

Data
Get branch stream information[Format][Input][Output][Function value]

SE

No.
1.4

Sint32 BPL_GetStmInfo(Sint32 bstmid, Sint32 *fid, Sint32*nkey, StmKey *keytbl)
bstmid:Branch stream ID
fid:
File ID
nkey:
Number of stream keys (nkey ≤BPL_STMKEY_MAX)
keytbl:Stream key table
Number of destinations that are already set (an error code results if this number
is negative)
Gets the branch stream information that is assigned to a branch stream.
Refer to the destination information-setting function (BPL_SetBranchInfo) for
the number of destinations.

GA[Function]

Data NameBPL_GetStmInfo

Co

Title
Function
specifications

nfi

de

[Output][Function value][Function]

20

Data NameBPL_SetStmInfo

nti
al

Title
Function
specifications

Data
Set destination information[Format]Data NameBPL_SetBranchInfo

No.
1.5

nti
al

Title
Function
specifications

Sint32 BPL_SetBranchInfo(Sint32 bstmid, Sint32 nbranch,
Sint32 *brtbl)
bstmid:Branch stream ID
nbranch: Number of destinations
brtbl:
Branch table
None
Error code
Assigns destination information (candidate destinations) to a branch stream.
(a)Assigns the branch stream IDs of branch candidates to the branch table.
To indicate that there are no destinations, specify BPL_BR_NONE as a branch tableelement.
brtbl[0] = BSTMID_A;
brtbl[1] = BPL_BR_NONE; /* No destinations (the end of BP) */brtbl[2] = BSTMID_B;
nbranch = 3;
A destination is specified using the BPL_SelectBranch function and abranch number (a position in the branch table).
In this example, the branch processing produces the following results,
depending on the destination that is selected:[Input]Selected
Destination

Branch number 2
Other

Title
Function
specifications

Data
Get destination information

SE[Format][Input][Output][Function value][Function]

Branches to branch stream ID BSTMID_A.
Terminates the branching playback process goes into the no
destination state immediately after this branch number isselected.
Branches to branch stream ID BSTMID_B.
(BPL_SelectBranch returns the BPL_ERR_BRNO error andinvalidates the selection.)

The number of streams must satisfy the following conditions:
X +Y≤Z
X: The number of stream keys that are set in bstmid
Y: Total number of destination stream keys
Z: Maximum number of streams that can be opened simultaneously (specified
using the STM_Init function)

GA

(b)

Branch Processing(when the branch execution switch of the server function is on)

Co

Branch number 0
Branch number 1

nfi

de

[Output][Function value][Function][Remarks]

Data NameBPL_GetBranchInfo

No.
1.6

Sint32 BPL_GetBranchInfo(Sint32 bstmid,
Sint32 *nbranch, Sint32 *brtbl, Sint32 nelem)bstmid:Branch stream ID
nelem:
Number of branch table elements
nbranch: Number of destinations (0 if no branch candidates)
brtbl:
Branch table (a maximum of nelem branch candidates are stored from the
beginning of the table)
Error code
Gets the destination information that is assigned to a branch stream.

Branching Playback Library User's Manual

21

Data
Set playback start stream[Format][Input][Output][Function value][Function]

Sint32 BPL_SetStart(Sint32 bstmid)
bstmid : Branch stream ID (BPL_BR_NONE: stops branching playback)None
Error code
Specify a playback start stream (the branch stream at the beginning of a scenario).
To stop branching playback, specify BPL_BR_NONE as the branch stream ID.

Data
Execute Branching Playback
Server[Format][Input][Output][Function value][Function]

Data NameBPL_ExecServer

No.
2.2

Sint32 BPL_ExecServer(Bool chgsw)
chgsw : Branch execution switch (ON: branch, OFF: do not branch)
None
Branching playback status
Executes the Branching Playback Server. When the branch execution switch isON, performs branching (switches branch streams).

Branching playback state
Constant

Co

(1)

No.
2.1

nfi

Title
Function
specifications

Data NameBPL_SetStart

de

Title
Function
specifications

nti
al

7.2 Branching Playback Processing

Description

BPL_SVR_COMPLETEDBPL_SVR_WAITSELBPL_SVR_SELECTBPL_SVR_NOBRN

Branching playback completed.
Wait for the selection of a destination.
Destination selected.
No destinations.

For branching playback states, see Section 3.3, Changing Branching Playback States.
Data
Select destination

GA

Title
Function
specifications

SE[Format][Input][Output][Function value][Function][Remarks]

22

Data NameBPL_SelectBranch

No.
2.3

Sint32 BPL_SelectBranch(Sint32 brno)
brno : Branch number
None
Error code
Selects a destination according to a specified branch number.
(a)Specifying the switch “ON” during the execution of the BPL_ExecServer
function results in branching (the current stream is switched with theselected destination).
(b) A destination must be selected even when there is only one branch candidate.

[Format][Input]Data
Get destination stream[Format][Input]de[Remarks]

Data NameBPL_GetNextStm

No.
2.5

nfi

Sint32 BPL_GetNextStm(Sint32 nelem, StmHn *stmtbl)
nelem:
Number of elements in the stream handle table (nelem≤BPL_STMKEY_MAX)
stmtbl:Stream handle table
Branch stream ID (Negative ID=no corresponding branch streams)
Gets a destination stream (branch stream ID and the stream handle).
(a)
Stream handles that correspond to stream keys are set in the stream handle
table.
(b) The function value remains negative until a destination is selected (until
the BPL_SelectBranch function is executed).

[Output][Function value][Function][Remarks]

Title
Function
specifications

No.
2.4

Sint32 BPL_GetCurStm(Sint32 nelem, StmHn *stmtbl)
nelem:
Number of elements in the stream handle table (nelem≤BPL_STMKEY_MAX)
stmtbl:Stream handle table
Branch stream ID (Negative ID=no corresponding branch streams)
Gets the current stream (branch stream ID and the stream handle) that is subject
to read access.
(a)
Stream handles that correspond to stream keys are set in the stream handle
table.

[Output][Function value][Function]

Title
Function
specifications

Data NameBPL_GetCurStm

nti
al

Data
Get current stream

Co

Title
Function
specifications

Data
Get stream group

No.
2.6

StmGrpHn BPL_GetStmGrp(void)
None
None
Stream group handle
Gets the handle of the stream group that is used by the BPL.
(a)
When activated, the BPL opens one stream group.
When the branching playback process is terminated, the stream grouphandle becomes NULL.

SE

GA[Format][Input][Output][Function value][Function][Remarks]

Data NameBPL_GetStmGrp

Branching Playback Library User's Manual23