The disclosed embodiments of the present invention relate to processing an interlaced stream having a plurality of data streams interlaced therein, and more particularly, to a method and stream processing apparatus capable of distinguishing data streams included in an interlaced stream by referring to auxiliary information (e.g., clip information).
Three-dimensional (3D) video presentation technology is developed to improve the viewing entertainment of the end-users. Regarding the 3D video content, it is commonly generated by using different cameras to thereby capture pictures of different views. The captured pictures of different views are then encoded to generate a plurality of bitstreams respectively corresponding to different views. For example, a main transport stream is used to carry left-view (left-eye) pictures, and a dependent transport stream is used to carry right-view (right-eye) pictures. The main transport stream and the dependent transport stream may be stored as individual non-interlaced streams (e.g., two files each having the m2ts format) or a single interlaced stream (e.g., one file having the SSIF format).
In a case where the main transport stream is normally recorded in one m2ts file and the dependent transport stream is normally recorded in another m2ts file, a conventional transport stream demultiplexer simply outputs a main video elementary stream for left-view playback according to the main transport stream and outputs a dependent video elementary stream for right-view playback according to the dependent transport stream. In another case where the main transport stream and the dependent transport stream are normally recorded in one SSIF file (i.e., an interlaced stream mixed by the main transport stream and the dependent transport stream is stored in the SSIF file), a conventional transport stream demultiplexer derives packet identifiers (PIDs) from the interlaced stream, and distinguishes between the main transport stream and the dependent transport stream in the interlaced stream according to the PIDs. In this way, the conventional transport stream demultiplexer outputs a main video elementary stream for left-view playback according to the identified main transport stream, and outputs a dependent video elementary stream for right-view playback according to the identified dependent transport stream.
As the 3D video content includes a main transport stream for left-view playback and a dependent transport stream for right-view playback, the storage requirement of the 3D video content is much higher than that of the two-dimensional (2D) video content. The Blu-ray disc (BD) is an optical storage medium designed to supersede the standard digital versatile disc (DVD). The BD disc may be a good choice to store the 3D video content due to its high storage capacity. However, using the BD disc for storing the 3D video content may encounter the issues of avoiding unauthorized copies of the stored 3D video content and/or the playback of the stored 3D video content using an unauthorized device. A BD Plus (BD+) technology is therefore developed to provide a cryptographic solution to protect the content stored on a BD disc. Taking the 3D video content stored on a BD disc for example, a digital rights management system employing the BD+ solution protects the main transport stream by encryption, and applies no encryption to the dependent transport stream. Consider a case where the main transport stream (which is an encrypted transport stream generated by the BD+ encryption) and the dependent transport stream are recorded in one SSIF file (i.e., an interlaced stream mixed by the main transport stream and the dependent transport stream is stored in the SSIF file), the conventional transport stream demultiplexer is unable to refer to PIDs derived from the interlaced transport stream for distinguishing between the main transport stream and the dependent transport stream in the interlaced stream since the main transport stream is an encrypted transport stream which is not decrypted yet. Thus, the conventional transport stream demultiplex design scheme is not applicable to dealing with the 3D video content protected using the BD+ technology.
There is a need for an innovative transport stream demultiplexer design capable of distinguishing between an encrypted transport stream (e.g., the main transport stream for left-view playback) and a non-encrypted transport stream (e.g., the dependent transport stream for right-view playback) and then processing the encrypted transport stream and the non-encrypted transport stream to accordingly generate respective video elementary streams.
In accordance with exemplary embodiments of the present invention, a method and stream processing apparatus capable of distinguishing data streams included in an interlaced stream by referring to auxiliary information (e.g., clip information) are proposed to solve the above-mentioned problem.
According to a first aspect of the present invention, an exemplary method for processing an interlaced stream is disclosed. The exemplary method includes the following steps: receiving the interlaced stream and auxiliary information that are transmitted, respectively, wherein the interlaced stream has a plurality of data streams interlaced therein, and the data streams include at least one encrypted data stream; and generating reference information, utilized for distinguishing between the data streams, by referring to the received auxiliary information.
According to a second aspect of the present invention, an exemplary stream processing apparatus for processing an interlaced stream is disclosed. The exemplary stream processing apparatus includes a receiving circuit and an identifying circuit. The receiving circuit is arranged to receive the interlaced stream and auxiliary information that are transmitted, respectively. The interlaced stream has a plurality of data streams interlaced therein, and the data streams include at least one encrypted data stream. The identifying circuit is coupled to the receiving circuit, and implemented for generating reference information, used for distinguishing between the data streams, by referring to the received auxiliary information.
These and other objectives of the present invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiment that is illustrated in the various figures and drawings.
Certain terms are used throughout the description and following claims to refer to particular components. As one skilled in the art will appreciate, manufacturers may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following description and in the claims, the terms “include” and “comprise” are used in an open-ended fashion, and thus should be interpreted to mean “include, but not limited to . . . ”. Also, the term “couple” is intended to mean either an indirect or direct electrical connection. Accordingly, if one device is coupled to another device, that connection may be through a direct electrical connection, or through an indirect electrical connection via other devices and connections.
The main conception of the present invention is to use any existing auxiliary information available for directly/indirectly providing needed location information of data packets included in an interlaced stream having at least one encrypted data stream included therein. By way of example, but not limitation, the clip information specified in a Blu-ray (BD) specification may be referenced to determine which packets in an interlaced stream belong to the main transport stream (i.e., an encrypted data stream) and which packets in the interlaced stream belong to the dependent transport stream (i.e., a non-encrypted data stream or an encrypted data stream). Further description of the present invention is detailed as follows.
In this exemplary embodiment, the interlaced stream TS_IN has a plurality of data streams, such as a first data stream TS1 and a second data stream TS2, interlaced therein. Please refer to
Regarding the interlaced stream TS_IN in this exemplary embodiment, the first and second data streams TS1 and TS2 include at least one encrypted data stream. For example, the first data stream TS1 may be an encrypted data stream. Therefore, the data packets TS1[0]-TS1[N] are encrypted data packets generated by a specific encryption/scrambling scheme. For example, the first and second data streams TS1 and TS2 in this exemplary embodiment are used for 3D playback, where at least a main transport stream (e.g., the first data stream TS1) is an encrypted data stream encrypted using a specific encryption/scrambling scheme, such as the aforementioned BD+ encryption.
The auxiliary information INF may provide information about the location of each data packet included in the interlaced stream TS_IN. By way of example, but not limitation, the auxiliary information INF may include start point information of each data packet included in the first and second data streams TS1 and TS2. As shown in
The identifying circuit 104 is coupled to the receiving circuit 102, and implemented for generating reference information INFref, utilized for distinguishing between the data streams included the interlaced stream TS_IN, by referring to the received auxiliary information INF. For example, the reference information INFref may be used for identifying at least one encrypted data stream (e.g., the first data stream TS1) from the received interlaced stream TS_IN. In this exemplary embodiment, the identifying circuit 104 may calculate a plurality of offsets (e.g., a1, a2-a1, and a3-a2 as shown in
The identifying circuit 104 and the extracting circuit 105 may act as a transport stream packet identifier. In this exemplary embodiment, the extracting circuit 105 is therefore implemented to gather and store data packets of the identified data stream TS1 (e.g., data packets of an identified main transport stream which is an encrypted data stream in this exemplary embodiment) into the first buffer 106_1, and also gather and store data packets of the second data stream TS2 (e.g., data packets of an identified dependent transport stream which is a non-encrypted data stream in this exemplary embodiment) into the second buffer 106_2.
Please refer to
Step 500: Start.
Step 502: Receive an interlaced stream TS_IN having first and second data streams TS1 and TS2 interlaced therein, wherein the first and second data streams TS1 and TS2 include at least one encrypted data stream. For example, the data stream TS1 is an encrypted data stream.
Step 504: Receive auxiliary information INF, including clip information INF_1 of the first data stream TS1 and clip information INF_2 of the second data stream TS2.
Step 506: Calculate a current offset according to the received clip information INF_1/INF_2.
Step 508: Check if a current data packet included in the received interlaced stream TS_IN is a data packet belonging to the first data stream TS1 (e.g., a data packet of an encrypted data stream) by referring to the calculated current offset. If yes, go to step 510; otherwise, go to step 512.
Step 510: Store the current data packet into a first buffer 106_1.
Step 512: Store the current data packet into a second buffer 106_2.
Step 514: Check if the last data packet in the interlaced stream TS_IN has been processed. If yes, go to step 516; otherwise, go to step 506 to deal with identification of the next data packet.
Step 516: End.
In step 514, the end of the interlaced stream TS_IN may be identified by comparing an offset accumulation result with a length of the interlaced stream TS_IN. Taking the interlaced stream TS_IN in
As a person skilled in the art can readily understand the operation of each step in
The first processing circuit 108_1 is coupled to the first buffer 106_1 and may be equipped with the decryption capability for generating a decrypted output stream TS1′ corresponding to the encrypted data stream (i.e., the first data stream TS1) by processing the data packets TS1[0]-TS1[N] stored in the first buffer 106_1. Moreover, the first processing circuit 108_1 may also have the transport stream demultiplexing capability for generating a main video elementary stream ES1 according to the decrypted output stream TS1′. As the second data stream TS2 is a non-encrypted data stream in this exemplary embodiment, the second processing circuit 108_2 may serve as a transport stream demultiplexer and therefore generate a dependent video elementary stream ES_2 by directly applying the transport stream demultiplexing operation upon the data packets TS2[0]-TS2[N] stored in the second buffer 106_2.
As shown in
Please refer to
In this exemplary embodiment, the identifying circuit 604 is arranged to provide the processing circuit 608 with reference information INFref′ such that the processing circuit 608 can distinguish between different data streams interlaced in the interlaced stream TS_NI. The identifying circuit 604 may act as a transport stream packet marker used to generate the reference information INFref′ including a plurality of indication marks, where the generated indication marks may be stored in a look-up table to be referred to by the processing circuit 608. More specifically, regarding each data packet included in the interlaced stream TS_IN, the identifying circuit 604 generates an indication mark indicative of a data packet in the interlaced stream TS_IN by referring to the received auxiliary information INF. For example, by properly accumulating the calculated offsets derived from the clip information INF_1 and INF_2, the actual start points 0-A2N of the data packets in the interlaced stream TS_IN shown in
By way of example, but not limitation, the aforementioned indication mark may be a flag used to indicate the beginning of a data packet belonging to a data stream TS1/TS2. Alternatively, the aforementioned indication mark may indicate an address range to which a data packet belonging to a data stream TS1/TS2 corresponds. Thus, with the help of the reference information INFref′ (e.g., indication marks designated to the data packets included in the interlaced stream TS_IN), the processing circuit 608 can correctly distinguish between data packets of the first data stream TS1 and data packets of the second data stream TS2. To put it another way, the processing circuit 608 is capable of identifying data packets of an encrypted data stream (e.g., the first data stream TS1) from the interlaced stream TS_IN by referring to the reference information INFref′.
As shown in
Please refer to
Step 700: Start.
Step 702: Receive an interlaced stream TS_IN having first and second data streams TS1 and TS2 interlaced therein, wherein the first and second data streams TS1 and TS2 include at least one encrypted data stream (e.g., the first data stream TS1).
Step 704: Receive auxiliary information INF, including clip information INF_1 of the first data stream TS1 and clip information INF_2 of the second data stream TS2.
Step 706: Obtain indication marks for data packets of the interlaced stream TS_IN stored in a buffer 606 by referring to the received clip information INF_1 and INF_2.
Step 708: Check if a current data packet included in the interlaced stream TS_IN read from the buffer 606 is a data packet belonging to the first data stream TS1 (e.g., a data packet of an encrypted data stream) by referring to a corresponding indication mark. If yes, go to step 710; otherwise, go to step 714.
Step 710: Decrypt the current data packet to generate a decrypted data packet.
Step 712: Perform a transport stream demultiplexing operation upon the decrypted data packet. Go to step 716.
Step 714: Perform a transport stream demultiplexing operation upon the current data packet.
Step 716: Check if the last data packet in the interlaced stream TS_IN has been processed. If yes, go to step 718; otherwise, go to step 708 to deal with the next data packet.
Step 718: End.
Similarly, step 716 may identify the end of the interlaced stream TS_IN by comparing an offset accumulation result of the calculated offsets with a length of the interlaced stream TS_IN derived from a header. However, this is for illustrative purposes only. Using other determination scheme to judge whether the last data packet has been processed is feasible.
As a person skilled in the art can readily understand the operation of each step in
In above exemplary embodiment shown in
It should be noted that any modification made to the exemplary stream processing apparatus 800 shown in
Please refer to
Step 900: Start.
Step 902: Receive auxiliary information INF, including clip information INF_1 of the first data stream TS1 and clip information INF_2 of the second data stream TS2. Proceed to steps 902 and step 904 in a parallel processing manner.
Step 904: Receive a current data packet transmitted by an interlaced stream TS_IN having the first and second data streams TS1 and TS2 interlaced therein, wherein the first and second data streams TS1 and TS2 include at least one encrypted data stream (e.g., the first data stream TS1). Go to step 908.
Step 906: Obtain an indication mark for the current data packet of the received interlaced stream TS_IN by referring to the received clip information INF_1 and INF_2.
Step 908: Check if a current data packet included in the interlaced stream TS_IN is a data packet belonging to the first data stream TS1 (e.g., a data packet of an encrypted data stream) by referring to the current indication mark. If yes, go to step 910; otherwise, go to step 914.
Step 910: Decrypt the current data packet to generate a decrypted data packet.
Step 912: Perform a transport stream demultiplexing operation upon the decrypted data packet. Go to step 916.
Step 914: Perform a transport stream demultiplexing operation upon the current data packet.
Step 916: Check if the last data packet in the interlaced stream TS_IN has been processed. If yes, go to step 918; otherwise, proceed to steps 904 and 906 in a parallel processing manner for dealing with the next data packet.
Step 918: End.
Similarly, step 916 may identify the end of the interlaced stream TS_IN by comparing an offset accumulation result of the calculated offsets with a length of the interlaced stream TS_IN derived from a header. However, this is for illustrative purposes only. Using other determination scheme to judge whether the last data packet has been processed is feasible.
As a person skilled in the art can readily understand the operation of each step in
In above exemplary embodiments, the incoming interlaced stream TS_IN to be processed by the stream processing apparatus 100/600/800 includes one encrypted data stream (e.g., a main transport stream for left-view playback) and one non-encrypted data stream (e.g., a dependent transport stream for right-view playback). However, this is not meant to be a limitation of the present invention. Consider a case where the incoming interlaced stream TS_IN has a plurality of encrypted data streams. The above-mentioned packet identifying scheme may be employed to deal with such an interlaced stream TS_IN by referring to auxiliary information (e.g., clip information). In short, the above-mentioned packet identifying scheme is capable of distinguishing data packets of different data streams interlaced in an interlaced stream by referring to the auxiliary information which is provided separately.
Those skilled in the art will readily observe that numerous modifications and alterations of the device and method may be made while retaining the teachings of the invention.
This application claims the benefit of U.S. provisional application No. 61/332,862, filed on May 10, 2010 and incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
61332862 | May 2010 | US |