KR20060103717A - Apparatus and method of psi converting - Google Patents
Apparatus and method of psi converting Download PDFInfo
- Publication number
- KR20060103717A KR20060103717A KR1020050025586A KR20050025586A KR20060103717A KR 20060103717 A KR20060103717 A KR 20060103717A KR 1020050025586 A KR1020050025586 A KR 1020050025586A KR 20050025586 A KR20050025586 A KR 20050025586A KR 20060103717 A KR20060103717 A KR 20060103717A
- Authority
- KR
- South Korea
- Prior art keywords
- converter
- information
- program
- section
- field
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/434—Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
- H04N21/4346—Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream involving stuffing data, e.g. packets or bytes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/08—Systems for the simultaneous or sequential transmission of more than one television signal, e.g. additional information signals, the signals occupying wholly or partially the same frequency band, e.g. by time division
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
본 발명은 PSI 변환 장치 및 방법에 관한 것이다. 본 발명은, 저장 및 재전송을 위해 가공된 트랜스포트 스트림의 프로그램 정보의 변환을 위해, 사용자에 의해 선택된 프로그램 정보만을 남기고 나머지 프로그램의 정보를 제거하는 PAT 변환기와, 상기 선택된 프로그램에 포함된 스트림 중 상기 저장 또는 재전송하고자 하는 스트림의 정보만을 남기고 나머지는 제거하는 PMT 변환기를 포함하여 구성되는 PSI 변환 장치를 제공한다. 따라서, 본 발명에 의하면, 저장 및 재전송을 위해 가공된 트랜스포트 스트림에서 프로그램 정보가 상기 가공된 트랜스포트 스트림의 내용을 반영하게 되어 정상적인 트랜스포트 스트림의 기능을 수행하게 하는 효과가 있다.The present invention relates to a PSI conversion apparatus and method. The present invention provides a PAT converter for removing the information of the remaining programs, leaving only the program information selected by the user, for converting the program information of the processed transport stream for storage and retransmission, and the stream among the streams included in the selected program. Provided is a PSI conversion apparatus including a PMT converter that leaves only the information of a stream to be stored or retransmitted and removes the rest. Therefore, according to the present invention, the program information in the processed transport stream for storage and retransmission reflects the contents of the processed transport stream, thereby effecting the function of a normal transport stream.
PSI, 시스템 디코더, 트랜스포트 패킷, PAT, PMT PSI, System Decoder, Transport Packet, PAT, PMT
Description
도 1은 ISO/IEC 13818-1 규격에 따른 트랜스포트 패킷의 구성을 나타낸 도면1 is a view showing the configuration of a transport packet according to the ISO / IEC 13818-1 standard
도 2는 종래 기술에 따른 트랜스포트 패킷의 디코딩을 위한 시스템 디코더의 구성을 나타낸 도면2 is a diagram illustrating a configuration of a system decoder for decoding a transport packet according to the prior art.
도 3은 일반적인 섹션 데이터 구조를 나타낸 도면3 shows a general section data structure.
도 4 내지 도 5는 각각 PAT용 섹션과 PMT용 섹션에서 상기 A와 B가 갖는 내용을 나타낸 도면4 to 5 are views showing the contents of A and B in the PAT section and the PMT section, respectively.
도 6은 본 발명에 따른 시스템 디코더의 구성을 나타낸 도면6 is a diagram illustrating a configuration of a system decoder according to the present invention.
도 7 내지 도 8은 본 발명에 따라 버퍼 0와 버퍼 1에 저장되는 내용, 그리고 최종 출력 결과를 예시한 도면7 to 8 illustrate the contents stored in
- 도면의 주요부분에 대한 부호의 설명 --Explanation of symbols for the main parts of the drawings-
100 : 버퍼 0 200 : PID 필터100:
300 : 섹션 필터 400 : 트랜스포트 패킷 디코더300: section filter 400: transport packet decoder
500 : 버퍼 1 600 : PSI 변환기500:
700 : 다중화기 0 800 : 다중화기 1700:
본 발명은 시스템 디코더에 관한 것으로, 보다 상세하게는 저장 및 재전송을 위한 트랜스포트 스트림의 가공시 상기 가공된 트랜스포트 스트림의 내용을 반영하도록 PSI 변환하는 장치 및 방법에 관한 것이다.The present invention relates to a system decoder, and more particularly, to an apparatus and method for PSI conversion to reflect the contents of the processed transport stream when processing the transport stream for storage and retransmission.
최근의 디지털 TV 방송 수신 장치는 기본적인 방송 수신 기능뿐 아니라, 저장 매체를 이용한 다양한 응용 형태로 발전하고 있다. 또한, IEEE 1394나 이더넷(Ethernet)등과 같은 네트워크 기능을 활용하여, 근거리 재전송 기능을 제공하기도 한다.Recently, the digital TV broadcast receiving apparatus has been developed into various application forms using a storage medium as well as a basic broadcast receiving function. In addition, by using a network function such as IEEE 1394 or Ethernet, it also provides a near-field retransmission function.
일반적으로 디지털 TV 방송용 전송 규격이 기반으로 하는 ISO/IEC 13818-1의 경우, 방송에 적합한 여러가지 요소를 제공하는데, 프로그램 관련 정보(PSI : Program Specific Information)도 그 중 하나이다.In general, ISO / IEC 13818-1 based on the transmission standard for digital TV broadcasting provides various elements suitable for broadcasting, and program specific information (PSI) is one of them.
실제 방송 서비스에서는 ISO/IEC 13818-1을 기반으로 하는 별도의 규격을 사용하는데, 한국 및 북미 지역에서는 ATSC(Advanced Television System Committee)를, 유럽 지역에서는 DVB(Digital Video Broadcasting)를, 일본에서는 흔히 ARIB(Association of Radio Industries and Business)라 불리는 디지털 BS/CS 등 다양한 규격을 사용하고 있다.The actual broadcast service uses a separate standard based on ISO / IEC 13818-1, which includes the Advanced Television System Committee (ATSC) in Korea and North America, Digital Video Broadcasting (DVB) in Europe, and ARIB in Japan. Various standards are used, such as digital BS / CS, called the Association of Radio Industries and Business.
상기 프로그램 정보도 ISO/IEC 13818-1에서 정의한 PSI 외에 PSIP(Program and System Information Protocol) 또는 SI(System Information)라 불리는 규격을 추가로 정의하여 사용하고 있다.In addition to the PSI defined in ISO / IEC 13818-1, the program information further defines and uses a standard called PSIP (Program and System Information Protocol) or SI (System Information).
그렇지만, 어느 규격이든 ISO/IEC 13818-1에서 정의한 PSI를 포함하도록 되 어 있기 때문에, 상기 규격을 준수하는 트랜스포트 스트림(Transport Stream)이면 기본적인 오디오와 비디오를 수신할 수 있다.However, since any standard includes the PSI defined in ISO / IEC 13818-1, a basic stream of audio and video can be received as long as the transport stream complies with the standard.
한편, 디지털 TV에서는 디지털 부호화된 오디오, 비디오, 기타 방송용 데이터 스트림을 시분할 다중화하여 트랜스포트 스트림 형태로 재구성한 후 전송한다. 상기 ISO/IEC 13818-1에서는 다중화를 위해 먼저, 각 오디오, 비디오, 기타 방송용 데이터 스트림을 188바이트 크기의 트랜스포트 패킷에 분할 할당하며, 각 패킷은 스트림별로 주어진 PID(Packet IDentifier)를 갖도록 한다. 이를 첨부한 도 1에 도시하였다.Meanwhile, in digital TV, time-division multiplexing of digitally encoded audio, video, and other broadcasting data streams is reconstructed into a transport stream and then transmitted. In ISO / IEC 13818-1, for multiplexing, first, each audio, video, and other broadcasting data stream is divided into transport packets having a size of 188 bytes, and each packet has a PID (Packet IDentifier) given for each stream. This is shown in Figure 1 attached.
도 1과 같이, 트랜스포트 패킷에는 전술한 PID외에 여러 가지 용도의 필드가 정의되어 있는데, 이들은 크게 PID 등이 포함되는 4바이트의 헤더, 어댑테이션 필드(adaptation field), 그리고 실제 전송될 데이터에 할당된 영역인 페이로드(payload)로 나뉘어진다. As shown in FIG. 1, fields for various uses are defined in the transport packet in addition to the above-described PID, which are largely allocated to a 4-byte header including an PID, an adaptation field, and data to be actually transmitted. It is divided into payloads.
상기 어댑테이션 필드에는 여러가지 선택적인 필드 뿐 아니라 특히 패킷의 빈공간을 채우기 위한 스터핑 바이트(stuffing byte)들이 포함되기 때문에 그 길이가 가변적이다.The adaptation field is variable in length, as well as several optional fields, especially stuffing bytes for filling the empty space of the packet.
이러한 트랜스포트 패킷을 디코딩하기 위한 시스템 디코더의 구성은 첨부한 도 2에 도시하였다.The configuration of a system decoder for decoding such a transport packet is shown in FIG.
도 2는 일반적인 시스템 디코더의 구성을 나타낸 블록도로써, 도 2와 같이 시스템 디코더는 외부에서 입력되는 트랜스포트 패킷을 저장하기 위해 입력단에 버퍼 0(10)를 갖는다.FIG. 2 is a block diagram showing the configuration of a general system decoder. As shown in FIG. 2, the system decoder has a buffer 0 (10) at an input terminal to store an externally input transport packet.
상기 버퍼 0(10)에 저장된 트랜스포트 패킷 중 상기 패킷을 다음 단계로 전송할 것인지 아니면 버릴 것인지 결정하게 되는데, 이를 PID 필터(20)가 수행한다.Among the transport packets stored in the buffer 0 (10) it is determined whether to transmit or discard the packet to the next step, the PID filter 20 performs this.
즉, 상기 PID 필터(20)를 적절히 설정하여 PID별로 패킷을 모으면 원래의 오디오, 비디오, 기타 방송용 데이터 스트림에 속하는 트랜스포트 패킷별로 분리할 수 있게 되고, 이를 다시 후단의 트랜스포트 패킷 디코더(40)에서 디코딩하게 되면 다중화 이전의 원 스트림을 복원하게 되는 것이다.That is, if the PID filter 20 is set appropriately and the packets are collected for each PID, it is possible to separate the transport packets belonging to the original audio, video, and other broadcasting data streams, and this is again performed by the
한편, 전술한 PSI는 트랜스포트 스트림에서 각 오디오와 비디오등의 요소들이 어떻게 특정 프로그램을 구성하는지 알려주는 데이터이다. 이들은 테이블 형태로 정의되는데, 대표적인 것이 PAT(Program Association Table)와 PMT(Program Map Table)이다. Meanwhile, the above-described PSI is data indicating how elements such as audio and video constitute a specific program in a transport stream. These are defined in the form of a table, and representative ones are a program association table (PAT) and a program map table (PMT).
상기 PSI도 일반 비디오나 오디오 스트림 등과 마찬가지로 트랜스포트 패킷 형태로 전송된다. 이때, 상기 오디오나 비디오 스트림이 PES(Packetized Elementary Stream) 형태로 만들어진 후 트랜스포트 패킷에 분할 전송되는 것과 달리, 상기 PAT나 PMT와 같은 PSI 테이블은 섹션(section)이라는 데이터 구조를 사용한다.The PSI is also transmitted in the form of a transport packet like a normal video or audio stream. At this time, unlike the audio or video stream is made in a packetized elementary stream (PES) form and then dividedly transmitted in a transport packet, a PSI table such as PAT or PMT uses a data structure called a section.
상기 섹션은 하나의 트랜스포트 패킷에 포함될 수 있으며, 이는 도 3에 도시하였다.The section may be included in one transport packet, which is shown in FIG.
도 3과 같이, 섹션 데이터 구조에서 pointer_field는 섹션을 전송하는 트랜스포트 패킷에서 새로 시작하는 첫번째 섹션의 첫번째 바이트의 위치를 나타낸다. 또한, 하나의 섹션이 완료된 후에는 새로운 섹션을 시작하거나 'FFh'로 트랜스포트 패킷의 남은 공간을 채울 수 있는데, 이를 전술한 어댑테이션 필드에서와 마찬가지로 스터핑 바이트라 한다.As shown in FIG. 3, the pointer_field in the section data structure indicates the position of the first byte of the first section that starts anew in the transport packet transmitting the section. In addition, after one section is completed, a new section may be started or 'FFh' may be used to fill the remaining space of the transport packet, which is referred to as a stuffing byte as in the aforementioned adaptation field.
상기 섹션의 내부 구조는 PAT용과 PMT 용이 다른데, 도 3에 나타낸 섹션 구조에서 A와 B는 테이블에 따라 달라지는 부분을 표시한 것이다. 특히, 상기 B는 실제 테이블에 속하는 부분을 나타낸다.The internal structure of the section is different from that for PAT and PMT. In the section structure shown in FIG. 3, A and B indicate parts that vary depending on the table. In particular, B represents a part belonging to the actual table.
도 4 내지 도 5는 각각 PAT용 섹션과 PMT용 섹션에서 상기 A와 B가 갖는 내용을 나타낸 도면이다.4 to 5 are diagrams showing the contents of the A and B in the PAT section and the PMT section, respectively.
먼저, 도 4에서 A와 B로 표시된 부분이 도 3의 섹션에 포함되어 PAT를 구성하게 되며, 16비트의 program_number 필드와 13비트의 program_map_PID 필드를 갖는 단위 정보를 여러개 포함할 수 있다.First, portions A and B in FIG. 4 are included in the section of FIG. 3 to configure a PAT, and may include a plurality of unit information having a 16-bit program_number field and a 13-bit program_map_PID field.
상기 PAT를 포함하는 트랜스포트 패킷의 PID와 상기 패킷에 실려오는 섹션의 table_id는 모두 '0'으로 고정되어 있다.The PID of the transport packet including the PAT and the table_id of the section carried in the packet are both fixed to '0'.
상기 program_map_PID는 program_number로 식별되는 프로그램의 정의(program definition)를 포함하는 트랜스포트 패킷의 PID이다. 이때, 상기 프로그램의 정의란 프로그램 번호(program_number)와 해당 프로그램을 구성하는 요소들의 대응관계를 의미하며, 이러한 프로그램 정의들로 구성되는 테이블이 PMT이다.The program_map_PID is a PID of a transport packet including a program definition identified by program_number. In this case, the definition of the program means a corresponding relationship between a program number (program_number) and the elements constituting the program, and the table composed of such program definitions is a PMT.
도 5에서 A와 B로 표시된 부분이 도 3의 섹션에 포함되어 상기 PMT를 구성하며, 8비트의 stream_type, 13비트의 elementary_PID, 그리고 가변 길이의 descriptor를 갖는 단위 정보를 여러개 포함할 수 있다.Parts A and B in FIG. 5 are included in the section of FIG. 3 to configure the PMT, and may include a plurality of unit information having an 8-bit stream_type, a 13-bit elementary_PID, and a variable length descriptor.
상기 PMT는 트랜스포트 스트림에 실려오는 모든 프로그램 정의를 포함하며, 하나의 PID에 실려올 수도 있고, 여러개의 PID에 실려올 수도 있다. 따라서, table_id는 '2'로 고정되어 있지만, PID는 고정되어 있지 않다.The PMT includes all program definitions carried in a transport stream, and may be loaded on one PID or multiple PIDs. Therefore, table_id is fixed at '2', but the PID is not fixed.
보통, 하나의 테이블을 구성하는 여러개의 섹션을 식별하기 위해서는 section_number 필드를 사용하지만 PMT의 경우 테이블을 구성하는 모든 섹션의 section_number는 '0'으로 설정되며 대신 각 섹션은 program_number 필드로 식별된다. 즉, program_number 당 하나의 섹션이 할당되며 어떠한 프로그램 정의도 2개 이상의 섹션에 나뉘어 올 수 없다.Normally, the section_number field is used to identify several sections that constitute one table. However, in the case of PMT, the section_number of all sections constituting the table is set to '0', and each section is identified by the program_number field. That is, one section is allocated per program_number and no program definition can be divided into two or more sections.
일반적으로 도 2에서 전술한 시스템 디코더가 전송된 트랜스포트 스트림에서 PSI 정보를 추출할 때에는 하드웨어가 PSI 정보를 포함하는 섹션을 분리하여 소프트웨어에 전달하고, 상기 소프트웨어가 이들 섹션을 모아 PSI 테이블을 재구성한 후 해당 트랜스포트 스트림에 포함된 프로그램의 구조를 알아낸다.In general, when the system decoder described above in FIG. 2 extracts PSI information from the transport stream, hardware separates the sections containing the PSI information and delivers them to the software, and the software gathers these sections to reconstruct the PSI table. After that, it finds out the structure of the program included in the corresponding transport stream.
즉, 어떤 프로그램이 전송되고 있고 또 그 프로그램을 구성하는 오디오와 비디오 스트림의 PID는 어떤 것인지 알아내는 것이다.In other words, it is to find out which program is being transmitted and what is the PID of the audio and video streams that make up the program.
이를 위해, 먼저 도 2의 PID 필터(20)에 PID가 '0'인 패킷을 추출하도록 설정한다. 상기 PID가 '0'인 패킷은 트랜스포트 패킷 디코더(40)를 거쳐 섹션 필터(30)로 전송되고, 여기서 table_id가 '0'인 섹션들을 외부 메모리로 전송한다.To this end, first, the PID filter 20 of FIG. 2 is set to extract a packet having a PID of '0'. The packet having the PID of '0' is transmitted to the
CPU, 즉 소프트웨어는 상기 메모리의 내용을 참조하여 PAT를 복원한다. 이후 상기 PAT에서 특정 program_number를 선택하고, 그 프로그램의 정의를 갖는 패킷의 PID 즉, program_map_PID를 PAT에서 찾아 PID 필터(20)에 설정한다.The CPU, ie, the software, restores the PAT by referring to the contents of the memory. After that, a specific program_number is selected in the PAT, and the PID of the packet having the definition of the program, that is, program_map_PID, is found in the PAT and set in the PID filter 20.
이를 통해 얻어진 패킷을 트랜스포트 패킷 디코더(40)를 거쳐 섹션 필터(30) 로 보내고, 여기에서 table_id가 '2'이고 program_number가 앞서 PAT에서 선택한 값인 섹션만을 추출하여 외부 메모리로 전송한다.The packet thus obtained is sent to the
상기 섹션에는 전체 PMT 중에서 앞서 선택한 프로그램에 해당하는 프로그램 정의가 포함되어 있으며, 소프트웨어가 이를 분리하여 프로그램에 필요한 오디오, 비디오 스트림등의 PID, 즉 상기 프로그램을 구성하는 elementary_PID들을 알아낸다.The section includes a program definition corresponding to the previously selected program among all PMTs, and the software separates the PIDs of the audio and video streams necessary for the program, that is, the elementary_PIDs constituting the program.
상기 PID들을 PID 필터(20)에 설정하면 해당 오디오와 비디오 스트림 등을 구성하는 트랜스포트 패킷을 추출하게 된다. 상기 트랜스포트 패킷들은 트랜스포트 패킷 디코더(40)를 거쳐 PES 형태로 만들어진 후 PID별로 역다중화되어 각각의 오디오 또는 비디오 디코더로 전송되게 된다.When the PIDs are set in the PID filter 20, transport packets constituting the corresponding audio and video streams are extracted. The transport packets are made into a PES through the
상기 트랜스포트 스트림을 PID 필터(20)를 거친 후 저장하거나 외부 장치로 재전송하는 경우에는 도 2의 버퍼 1(50)을 경유하게 된다.When the transport stream is stored after passing through the PID filter 20 or retransmitted to an external device, the transport stream passes through the
따라서, 상기 버퍼 1(50)에는 원래의 스트림에서 추출된 트랜스포트 패킷이 저장되는데, 이들이 정상적인 트랜스포트 스트림을 구성하기 위해서는 PSI 테이블을 포함하는 패킷도 저장되어야 한다.Accordingly, the transport packet extracted from the original stream is stored in the
상기 PSI는 전술한바와 같이, 트랜스포트 스트림에 실려오는 프로그램에 대한 정보를 갖는 테이블 즉 PAT와, 각 프로그램을 구성하는 요소에 관한 정보를 갖는 테이블 즉 PMT를 포함하며, 상기 테이블들은 그들이 실려오는 트랜스포트 스트림의 정보를 정확히 기술하고 있어야 한다.As described above, the PSI includes a table having information on programs carried in a transport stream, that is, a PAT, and a table having information on elements constituting each program, that is, a PMT. It must accurately describe the information in the port stream.
한편, 수신된 트랜스포트 스트림에서 PID 필터(20)를 통해 부분 트랜스포트 스트림(partial transport stream)을 만드는 과정은 원래의 트랜스포트 스트림에 포함된 PSI가 부분 트랜스포트 스트림의 내용과 맞지 않는 결과를 가져온다.Meanwhile, the process of creating a partial transport stream through the PID filter 20 from the received transport stream may result in that the PSI included in the original transport stream does not match the content of the partial transport stream. .
예를 들어, 원래의 트랜스포트 스트림에는 A,B,C,D 네 개의 프로그램이 포함되어 있고, 상기 A 프로그램에는 한개의 비디오와 세개의 오디오 스트림이 포함되어 있다고 가정할 때, PID 필터링을 통해 상기 A 프로그램의 비디오와 첫번째 오디오 스트림만을 저장한다고 하면, 결과로 얻어지는 부분 트랜스포트 스트림에는 PSI에 명시된 스트림 중 일부(비디오와 오디오 스트림 각 한개)만이 포함되므로 PSI의 내용이 실제와 맞지 않게 된다.For example, assuming that the original transport stream includes four programs A, B, C, and D, and the A program includes one video and three audio streams, If you store only the video and the first audio stream of the A program, the resulting partial transport stream contains only some of the streams specified in the PSI (one video and one audio stream), so the contents of the PSI are not correct.
따라서, 원래의 PSI를 그대로 부분 트랜스포트 스트림에 포함시키는 경우, 상기 PSI가 프로그램 정보로서의 역할을 제대로 수행할 수 없게 된다.Therefore, when the original PSI is included in the partial transport stream as it is, the PSI cannot function properly as program information.
이를 해결하기 위해서는 트랜스포트 스트림을 저장 또는 재전송 목적으로 가공하여 부분 트랜스포트 스트림을 만들때, 반드시 전술한 PAT와 PMT를 함께 수정해야 한다.In order to solve this problem, when the transport stream is processed for the purpose of storing or retransmitting to make a partial transport stream, the above-described PAT and PMT must be modified together.
즉, 시스템 디코더는 원래의 PSI 테이블과 변환된 PSI 테이블을 모두 제공할 수 있어야 하는 것이다. 상기 원래의 PSI 테이블은 최초에 소프트웨어가 프로그램 정보를 분석하기 위한 것이고, 상기 변환된 테이블은 PSI 테이블에서 일부 스트림만을 선택하여 저장 또는 재전송할 때 함께 출력하기 위한 것이다.That is, the system decoder should be able to provide both the original PSI table and the converted PSI table. The original PSI table is initially for software to analyze the program information, and the converted table is for outputting when selecting and storing or retransmitting only some streams in the PSI table.
본 발명은 상기와 같은 문제점을 해결하기 위한 것으로서, 본 발명의 목적은 ISO/IEC 13818-1의 규격을 따르는 트랜스포트 스트림을 저장 또는 재전송을 위해 부분 트랜스포트 스트림을 만들때 그에 따른 PSI가 올바른 내용을 갖도록 변환하는 장치 및 방법에 관한 것이다.SUMMARY OF THE INVENTION The present invention has been made to solve the above problems, and an object of the present invention is to provide a correct PSI when creating a partial transport stream for storing or retransmitting a transport stream conforming to ISO / IEC 13818-1. It relates to an apparatus and a method for converting to have.
상기 목적을 달성하기 위하여, 본 발명은, 저장 및 재전송을 위해 가공된 트랜스포트 스트림의 프로그램 정보의 변환을 위해, 사용자에 의해 선택된 프로그램 정보만을 남기고 나머지 프로그램의 정보를 제거하는 PAT 변환기와, 상기 선택된 프로그램에 포함된 스트림 중 상기 저장 또는 재전송하고자 하는 스트림의 정보만을 남기고 나머지는 제거하는 PMT 변환기를 포함하여 구성되는 PSI 변환 장치를 제공한다.In order to achieve the above object, the present invention provides a PAT converter for removing program information selected by a user, leaving only program information selected by a user, for conversion of program information of a processed transport stream for storage and retransmission; Provided is a PSI conversion apparatus including a PMT converter that leaves only the information of the stream to be stored or retransmitted and removes the rest of the streams included in the program.
상기 PAT 변환기는, 프로그램의 선택을 위한 program_number 필드를 참조하는 PROG_NUM 레지스터를 포함하는 것을 특징으로 한다.The PAT converter may include a PROG_NUM register referring to a program_number field for selecting a program.
상기 PMT 변환기는, 상기 저장 또는 재전송하고자 하는 스트림 정보를 선택하기 위한 ES_MASK 레지스터를 포함하는 것을 특징으로 한다.The PMT converter includes an ES_MASK register for selecting stream information to be stored or retransmitted.
상기 PAT 변환기와 PMT 변환기에 의해 변경되는 섹션 길이의 보정을 위한 섹션 길이 변환기를 더 포함하여 구성되는 것을 특징으로 한다.And a section length converter for correcting the section length changed by the PAT converter and the PMT converter.
상기 섹션 길이 변환기는, senction_length 필드의 어드레스를 설정하기 위한 SEC_LEN_PTR 레지스터와, 섹션의 크기를 카운트하기 위한 SEC_LEN 카운트 레지스터와, 상기 트랜스포트 패킷의 변환 과정에서 발생한 빈 영역의 크기가 누적되는 SKIP_LEN 레지스터를 포함하는 것을 특징으로 한다.The section length converter includes a SEC_LEN_PTR register for setting the address of the senction_length field, a SEC_LEN count register for counting the size of the section, and a SKIP_LEN register for accumulating the size of the free area generated during the conversion of the transport packet. Characterized in that.
상기 PAT 변환기와 PMT 변환기에 의해 정보가 제거된 빈 공간을 어댑테이션 필드의 스터핑 바이트로 처리하는 AF 변환기를 더 포함하여 구성됨을 특징으로 한다.And an AF converter for processing the empty space from which the information is removed by the PAT converter and the PMT converter as stuffing bytes of the adaptation field.
상기 변경된 섹션을 위한 CRC 값을 새로 생성하는 CRC 32 발생기를 더 포함하는 것을 특징으로 한다.The apparatus may further include a
본 발명은, 저장 및 재전송을 위해 가공된 트랜스포트 스트림의 프로그램 정보의 변환 방법에 있어, 사용자에 의해 선택된 프로그램 정보만을 남기고 나머지 프로그램의 정보를 제거하는 단계와, 상기 선택된 프로그램에 포함된 스트림 중 상기 저장 또는 재전송하고자 하는 스트림의 정보만을 남기고 나머지는 제거하는 단계와, 상기 제거 단계에 따라 변경된 section_length 필드를 보정하는 단계와, 상기 정보가 제거된 빈 공간을 어댑테이션 필드의 스터핑 바이트로 처리하는 단계를 포함하여 이루어지는 PSI 변환 방법을 제공한다.The present invention relates to a method of converting program information of a transport stream processed for storage and retransmission, comprising the steps of removing information of a remaining program, leaving only program information selected by a user; Leaving only the information of the stream to be stored or retransmitted and removing the rest, correcting the section_length field changed according to the removing step, and treating the empty space from which the information has been removed as a stuffing byte of the adaptation field; A PSI conversion method is provided.
상기 어댑테이션 필드의 스터핑 바이트 처리 단계는, 상기 정보가 제거된 빈공간을 트랜스포트 패킷내의 다음 데이터를 앞당겨 기록하는 단계와, 상기 트랜스포트 패킷의 모든 데이터가 처리된 뒤 최종적으로 남은 공간을 상기 스터핑 바이트로 처리하는 단계를 포함하는 것을 특징으로 한다.The stuffing byte processing step of the adaptation field may include: writing an empty space from which the information has been removed to advance the next data in a transport packet, and writing the remaining space after all data of the transport packet has been processed. It characterized in that it comprises a step of processing.
상기 어댑테이션 필드의 변경에 따라 adaptation_field_control 필드를 수정하는 단계를 더 포함하는 것을 특징으로 한다.The method may further include modifying the adaptation_field_control field according to the change of the adaptation field.
따라서, 본 발명에 의하면, 저장 및 재전송을 위해 가공된 트랜스포트 스트림에서 프로그램 정보가 상기 가공된 트랜스포트 스트림의 내용을 반영하게 되어 정상적인 트랜스포트 스트림의 기능을 수행하게 하는 효과가 있다.Therefore, according to the present invention, the program information in the processed transport stream for storage and retransmission reflects the contents of the processed transport stream, thereby effecting the function of a normal transport stream.
이하 상기의 목적을 구체적으로 실현할 수 있는 본 발명의 바람직한 실시예를 첨부한 도면을 참조하여 설명한다.Hereinafter, with reference to the accompanying drawings, preferred embodiments of the present invention that can specifically realize the above object will be described.
아울러, 본 발명에서 사용되는 용어는 현재 널리 사용되는 일반적인 용어를 선택하였으나, 새로운 기술의 출현에 따라 본 발명에서 출원인이 가장 적합하다고 판단한 용어도 임의로 사용하였으며, 이에 대해서는 해당 설명부에서 용어의 의미를 명확히 설명하기로 한다. 따라서, 본 발명을 이해함에 있어 단순한 용어의 명칭이 아닌 용어가 가지는 의미로서 본 발명을 파악하여야 됨을 밝혀 두고자 한다.In addition, the term used in the present invention was selected a general term that is widely used at present, but according to the emergence of a new technology, the term that the applicant deemed most appropriate in the present invention was arbitrarily used, and the meaning of the term in the corresponding description. It will be explained clearly. Therefore, in the understanding of the present invention, it is intended that the present invention should be understood as the meaning of terms rather than simple names of terms.
도 6은 본 발명에 따른 시스템 디코더의 구성을 나타낸 도면이다.6 is a diagram illustrating a configuration of a system decoder according to the present invention.
도 6과 같이, 본 발명에 따른 시스템 디코더는 전술한 도 2와 같은 시스템 디코더에 PSI 변환기(600)가 추가된 형태를 갖게되며, 이를 위해 다중화기 0(700)와 다중화기 1(800)을 포함한다.As shown in FIG. 6, the system decoder according to the present invention has a form in which the
상기 PSI 변환기(600)는 PAT(Program Association Table) 변환기(611), PMT(Program Map Table) 변환기(613), 섹션 길이 변환기(615), AF(Adaptation Field) 변환기(621) 및 CRC 변환기(623)를 포함하여 구성된다.The
먼저, 상기 PAT 변환기(611)를 통해서 PAT를 변환하기 위해서는 프로그램을 선택하기 위한 레지스터가 필요하다. First, in order to convert a PAT through the
즉, 상기 PAT 변환기(611)를 통해서는 사용자에 의해 선택된 프로그램 정보만을 남기고 나머지 프로그램의 정보를 제거하게 되며, 이를 위해 프로그램 선택을 위한 레지스터가 필요하게 되는 것이다.That is, the
이처럼, 상기 PAT에서 프로그램을 식별하기 위해서는 도 4에서 예시한 PAT 내의 16 비트 program_number 필드를 사용하며, 이를 위해 도 6과 같이 PAT 변환기(611) 내부에 16비트의 PROG_NUM 레지스터를 둔다.As such, in order to identify a program in the PAT, a 16-bit program_number field in the PAT illustrated in FIG. 4 is used. For this purpose, a 16-bit PROG_NUM register is placed in the
즉, 상기 PAT의 경우 여러 개의 섹션에 나뉘어 올 수 있고, 하나의 테이블을 구성하는 복수의 섹션은 반드시 순서대로 와야 한다는 규정이 없기 때문에, 상기 섹션 또는 테이블 내에 각 정보가 위치하는 순서만으로는 원하는 정보를 식별할 수 없다. 따라서, program_number 필드를 직접 참조해야 하는 것이다.That is, the PAT may be divided into several sections, and since there is no provision that a plurality of sections constituting one table must come in order, only the order in which each information is located in the section or table can provide desired information. It cannot be identified. Therefore, you must refer directly to the program_number field.
반면, PMT의 경우, PMT를 구성하는 하나의 섹션 내에 특정 프로그램을 구성하는 모든 요소들이 포함되어 있기 때문에, 섹션 내에 각 정보가 위치하는 순서로 식별하는 것이 편리하다.On the other hand, in the case of the PMT, since all elements constituting a specific program are included in one section constituting the PMT, it is convenient to identify each information in the order in which the information is located.
즉, 16비트 레지스터를 사용하여 비트 0에서 비트 15까지를 PMT 내의 첫번째 elementary_PID부터 16번째 elementary_PID까지 16개 스트림 정보에 대응시키면, 섹션을 처리할 때 순차적으로 디코딩되는 스트림 정보를 제거할지 여부를 해당되는 비트를 보고 결정할 수 있는 것이다. That is, if
따라서, PMT 변환기(613)를 통해서는 선택된 프로그램에 포함된 스트림 중 실제 저장 또는 재전송하고자 하는 스트림의 정보만을 남기고 나머지는 제거하게 된다.Accordingly, the
이러한 역할을 수행하는 레지스터가 도 6의 PMT 변환기(613)내에 위치한 ES_MASK 레지스터이다.The register performing this role is the ES_MASK register located in the
한편, PSI 변환은 PAT를 포함한 트랜스포트 패킷을 버퍼 0(100)에서 읽어와 버퍼 1(500)에 쓰는 제1단계 과정과, 버퍼 1(500)에서 데이터를 읽어 출력하는 제2 단계 과정으로 이루어진다.On the other hand, PSI conversion consists of a first step of reading a transport packet including PAT from buffer 0 (100) and writing to buffer 1 500, and a second step of reading data from buffer 1 (500) and outputting it. .
즉, 도 6에서 도면 부호 610이 지정하는 블록들은 상기 제1단계 과정을 위한 블록들이며, 도면 부호 620이 지정하는 블록들은 상기 제2단계 과정을 위한 블록들이다.That is, blocks designated by
상기 버퍼 0(100)는 외부에서 입력된 데이터를 시스템 디코더 내의 각 장치로 전송하기 위해 사용되며, 상기 버퍼 1(500)은 저장 및 재전송을 위한 데이터를 임시로 저장하기 위한 버퍼이다.The
이때, PSI 데이터가 아닌 일반 PES의 경우에는 도 2의 시스템 디코더와 같은 방식으로 처리한다. 즉, 별다른 처리없이 버퍼 1(100)로 전송되는데, 이는 다중화기 0(700)에 의해 제어된다.In this case, the general PES that is not the PSI data is processed in the same manner as the system decoder of FIG. 2. That is, it is sent to the
이때, PID 필터(200)는 처리중인 패킷이 PSI인지 PES인지를 나타내는 신호를 발생하여 PSI 변환기(600)에 전달하고, 상기 PSI 변환기(600)는 이 신호와 PSI 변환기(600) 내부 상태에 근거하여 상기 다중화기 0(700)의 출력을 결정한다.At this time, the
이를 좀 더 자세히 설명하면, 상기 버퍼 0(100)에 PID가 0인 패킷, 즉 PAT를 포함하는 섹션이 저장되면, 상기 PID 필터(200)는 이를 PSI 변환기(600)에 알린다.In more detail, when a packet having a PID of 0, that is, a section including a PAT is stored in the buffer 0 (100), the
상기 신호에 따라 상기 PSI 변환기(600) 내부 PAT 변환기(611)는 트랜스포트 패킷의 처음부터 테이블이 시작되기 직전, 즉, 도 3에서 B로 표시된 부분 전까지의 데이터를 버퍼 0(100)에서 읽어와 버퍼 1(500)에 저장하도록 다중화기 0(700)를 제어한다.According to the signal, the
이후, 도 3에서 B로 표시된 테이블을 읽을 때에는 내부의 PROG_NUM 레지스터 에 설정된 값에 해당하는 데이터만을 읽어온다. 즉, 내부의 PROG_NUM 레지스터에 설정된 값이 아닌 program_number에 해당하는 데이터는 읽지 않고, 대신 그 부분이 차지하는 길이만큼을 섹션 길이 변환기(615)의 SKIP_LEN 레지스터에 가산한다.Subsequently, when reading the table indicated by B in FIG. 3, only data corresponding to a value set in the internal PROG_NUM register is read. That is, data corresponding to program_number other than the value set in the internal PROG_NUM register is not read, and instead, the length corresponding to the portion is added to the SKIP_LEN register of the
이는, PAT에서 각 프로그램 정보는 16비트의 program_number와 13비트의 program_map_PID를 포함하는 4바이트의 영역을 차지하도록 되어 있기 때문에, 결국 상기 PAT 변환기(611)의 역할은 선택된 program_number에 해당하는 4바이트는 읽어서 저장하고, 그외의 경우는 4바이트를 건너 뛰면서 대신 섹션 길이 변환기(615)의 SKIP_LEN 레지스터에 4바이트를 가산하는 과정으로 볼 수 있다.In the PAT, since each program information occupies a 4-byte area including a 16-bit program_number and a 13-bit program_map_PID, the role of the
또한, 이와 같이 섹션을 처리하는 동안 섹션의 크기가 변경되면, 섹션 헤더의 section_length 필드도 상기 변경된 크기로 수정해 주어야 한다. In addition, if the size of the section is changed while processing the section as described above, the section_length field of the section header should also be modified to the changed size.
이를 위해, 버퍼 0(100)에서 버퍼 1(500)로 데이터를 전송할때, 상기 버퍼 0(100)에서 읽은 데이터가 section_length 필드이면 버퍼 1(500)에 상기 데이터가 써지는 어드레스를 섹션 길이 변환기(615)내의 SEC_LEN_PTR 레지스터에 설정한다.To this end, when data is transferred from buffer 0 (100) to buffer 1 (500), if the data read from buffer 0 (100) is a section_length field, the address at which the data is written to buffer 1 (500) is converted to a section length converter ( 615) to the SEC_LEN_PTR register.
상기 SEC_LEN 카운트 레지스터는 이때부터 카운트를 시작하여 섹션의 끝, 즉 CRC 32 필드가 버퍼 1(500)에 저장될 때까지 카운트를 진행한다. 섹션이 완료되면 상기 SEC_LEN 레지스터의 값은 SEC_LEN_PTR 레지스터가 가르키는 위치에 써지면서, 다음 섹션의 처리를 위해 '0'으로 리셋된다.The SEC_LEN count register starts counting from this time until the end of the section, that is, counts until the
이상의 과정을 거쳐 트랜스포트 패킷의 처리가 완료되면, 그 과정에서 발생한 빈 영역의 크기가 모두 섹션 길이 변환기(615)의 SKIP_LEN 레지스터에 누적되는데, 이 값은 제2단계 과정에서 상기 트랜스포트 패킷이 최종 출력을 위해 읽혀질때 AF 변환기(621)에 의해 어뎁테이션 필드를 보정하는데 사용된다. 상기 STUFF_LEN 레지스터의 값은 트랜스포트 패킷의 처리가 완료될 때 AF 변환기(621)의 STUFF_LEN 레지스터에 복사되며, 상기 SKIP_LEN 레지스터는 다음 패킷의 처리를 위해 '0'으로 리셋된다.After the processing of the transport packet is completed through the above process, all the size of the empty area generated in the process is accumulated in the SKIP_LEN register of the
한편, PMT 변환은 일차적으로 섹션 헤더에 있는 program_number 필드의 필터링에서 시작된다. 상기 PMT는 여러 섹션에 나뉘어 오는데, 하나의 프로그램에 하나의 섹션이 할당되므로 원하는 프로그램의 정보를 포함한 섹션을 찾기 위해서는 이와 같은 방법이 효과적이다.PMT conversion, on the other hand, begins with the filtering of the program_number field in the section header. The PMT is divided into several sections. Since one section is assigned to one program, such a method is effective to find a section including information of a desired program.
보통 하나의 패킷에는 하나의 program_number에 해당하는 섹션들만 실려오지만, 규격상 모든 프로그램 정보가 하나의 패킷에 실려올 수도 있기 때문에, 이와 같은 방법으로 원하는 프로그램의 정보를 추출하는 것이 안전한다.Normally, only one section corresponding to one program_number is included in one packet. However, since all program information may be contained in one packet, it is safe to extract information of a desired program in this manner.
이는 섹션 필터(300)가 일반적으로 수행하는 것과 같은데, PSI 변환기(600)에서는 버퍼 0(100)에 저장된 트랜스포트 패킷에서 PROG_NUM 레지스터에 설정한 program_number에 대응되는 섹션만 읽어냄으로써 가능하다.This is the same as the
이를 위해서, 섹션의 처음부터 읽지 않고 먼저, 도 5에서 A로 표시한 부분, 즉 program_number 필드를 읽어서 원하는 섹션인지 여부를 확인한 후, 해당 섹션의 처음으로 돌아가 버퍼 1(500)로 복사한다.To do this, first of all, instead of reading from the beginning of the section, the part indicated by A in FIG.
상기 progam_number에 대응되는 섹션 이외의 데이터는 건너뛰면서 대신 섹션 길이 변환기(615)의 SKIP_LEN 레지스터에 해당 데이터의 길이만을 가산한다.Data other than the section corresponding to the progam_number is skipped and instead only the length of the data is added to the SKIP_LEN register of the
상기 program_number에 대응되는 섹션의 데이터에 대해서도 수정이 필요한 데, 프로그램에 포함된 스트림 중에서 실제 저장 또는 재전송에 포함될 스트림의 정보만을 선별해야 하기 때문이다.The data of the section corresponding to the program_number needs to be modified because only the information of the stream to be included in the actual storage or retransmission must be selected among the streams included in the program.
이를 위해, PMT의 내용을 순차적으로 ES_MASK 레지스터에 설정된 값과 비교하면서 제거 여부를 결정한다.To do this, the contents of the PMT are sequentially compared with a value set in the ES_MASK register to determine whether to remove the PMT.
예를 들어, 상기 ES_MASK의 비트 1이 '1'로 설정되어 있다면, 이 프로그램에 포함된 스트림 중 두 번째 스트림에 관한 정보를 제거하라는 의미이다. 상기 제거하는 정보에 대해서는 PAT의 처리에서와 마찬가지로 버퍼 1로 데이터를 전송하지 않고, SKIP_LEN 레지스터에 해당 정보의 길이를 가산한다.For example, if
전술한 PAT에서 단위 정보의 크기가 4바이트로 고정되어 있는 것과는 달리, PMT의 경우 하나의 스트림에 관한 정보의 길이가 일정하지 않다. 이는 각 스트림에 대한 정보에 descriptor가 포함되기 때문이다.Unlike in the above-described PAT, the unit information has a fixed size of 4 bytes. In the case of the PMT, the length of information about one stream is not constant. This is because the descriptor is included in the information about each stream.
상기 descriptor는 종류를 식별하기 위한 1바이트의 descriptor_tag와 descriptor의 크기를 나타내는 1바이트의 descriptor_length로 시작된다. 상기 decriptor의 크기는 가변적이며 descriptor_length에 표시된다.The descriptor starts with 1 byte descriptor_tag for identifying the type and 1 byte descriptor_length indicating the size of the descriptor. The size of the decriptor is variable and is indicated in descriptor_length.
따라서, 각 SKIP_LEN 레지스터의 값을 구할 때에는 해당 스트림의 정보에 포함되는 stream_type에서 elementary_PID까지의 3바이트에, descriptor의 크기를 더해야 한다.Therefore, when obtaining the value of each SKIP_LEN register, the size of the descriptor should be added to 3 bytes from stream_type to elementary_PID included in the information of the corresponding stream.
버퍼 0(100)에 저장된 트랜스포트 패킷의 끝에 이르면, SKIP_LEN 레지스터의 값이 PAT 처리시와 마찬가지로 STUFF_LEN 레지스터에 옮겨지면서 다음 패킷의 처리를 위해 '0'으로 리셋된다.When the end of the transport packet stored in the buffer 0 (100) is reached, the value of the SKIP_LEN register is transferred to the STUFF_LEN register as in the PAT processing and reset to '0' for processing the next packet.
또한, SEC_LEN 카운터 레지스터의 값도 PAT 처리시와 마찬가지로 각 섹션을 읽는 동안 불필요한 데이터를 제거하여 얻어지는 새로운 섹션의 크기를 갖도록 갱신된다.In addition, the value of the SEC_LEN counter register is updated to have a size of a new section obtained by removing unnecessary data while reading each section as in the case of PAT processing.
상기 버퍼 0(100)에서 섹션을 읽을때 section_length 필드가 발견되면, 그 위치에 대응되는 버퍼 1(500)의 어드레스를 SEC_LEN_PTR 레지스터에 저장하며, 이때부터 SEC_LEN 카운터 레지스터는 카운트를 시작한다. When a section_length field is found when reading a section from the buffer 0 (100), the address of the
이후, 섹션의 마지막 데이터가 버퍼 1(500)에 저장되면 SEC_LEN_PTR 레지스터가 가르키는 어드레스에 SEC_LEN 카운터 레지스터의 값을 쓴다.After that, when the last data of the section is stored in the
이상의 과정을 통해 테이블의 내용과 section_length 필드의 보정이 이루어지고, 어댑테이션 필드의 보정에 사용될 SKIP_LEN 레지스터의 값이 얻어진다. Through the above process, the contents of the table and the section_length field are corrected, and the value of the SKIP_LEN register to be used for correcting the adaptation field is obtained.
이후, 상기 제2단계 과정, 즉 출력을 위해 버퍼 1(500)에서 트랜스포트 패킷을 읽을 때에는 최종적으로 두가지가 보정된다.Thereafter, two steps are finally corrected when the transport packet is read from the
우선, 트랜스포트 패킷 헤더를 출력한 직후 AF 변환기(621)가 어댑테이션 필드를 보정한다. ISO/IEC 13818-1 규격에 따르면 도 1에 도시한바와 같이, 어댑테이션 필드의 끝에는 'FFh'의 값을 갖는 스터핑 바이트들이 올 수 있으며, 이를 이용하여 트랜스포트 패킷의 헤더와 페이로드(payload)가 차지하는 영역 외의 부분을 채우게 된다.First, the
즉, 페이로드(payload)가 작아지면 상기 어댑테이션 필드의 스터핑 바이트를 추가하여 전체 패킷의 크기가 188바이트가 되도록 맞추는 것이다.In other words, when the payload decreases, the stuffing byte of the adaptation field is added to adjust the size of the entire packet to 188 bytes.
이외에도 PSI를 포함한 패킷의 경우에는 전술한 바와 같이, 섹션이 끝난 후 패킷의 남은 부분을 스터핑 바이트로 채우는 방법이 있지만, 패킷 내에서 섹션이 완료되지 않고 다음 패킷으로 이어지는 경우에는 사용할 수 없다. 따라서, PSI 변환 결과 발생한 빈공간은 어댑테이션 필드를 활용한다.In addition, in the case of the packet including the PSI, as described above, there is a method of filling the remaining portion of the packet with stuffing bytes after the end of the section, but it cannot be used when the section is not completed in the packet and continues to the next packet. Therefore, the empty space generated as a result of the PSI conversion utilizes an adaptation field.
상기 어댑테이션 필드는 1바이트의 adaptation_field_length로 시작하여 adaptation_field_length에 지정된 바이트 수만큼의 데이터가 뒤따른다. 두번째 바이트는 1바이트의 플래그(falg) 바이트로써 각 비트는 discontinuity_indicator처럼 지시자 역할을 하거나 이후 특정 필드가 존재하는지 여부를 나타낸다. The adaptation field starts with one byte of adaptation_field_length and is followed by data equal to the number of bytes specified in the adaptation_field_length. The second byte is a flag byte of one byte. Each bit serves as an indicator like discontinuity_indicator or indicates whether a specific field exists.
즉, PCR_flag가 '1'이면 플래그 바이트 뒤에 PCR 필드가 오고, '0'이면 PCR 필드가 존재하지 않는 등의 정보를 나타내는 것이다.That is, if the PCR_flag is '1', the PCR field is followed by the flag byte, and if the PCR_flag is '0', the PCR field is not present.
이때, 상기 adaptation_field_length가 '0'인 경우는 어댑테이션 필드가 adaptation_field_length 필드로만 이루어진 특수한 경우이다. 또한, adaptation_field_length가 '1'인 경우는 플래그 바이트까지만 존재하고, 플래그 바이트 내의 모든 플래그가 '0'인 경우이다. 즉, 상기 플래그 바이트에 그 존재 여부를 표시하는 선택 필드들이 모두 없는 경우이다.In this case, the adaptation_field_length is '0', which is a special case in which the adaptation field includes only the adaptation_field_length field. In addition, when adaptation_field_length is '1', only up to the flag byte exists, and all the flags in the flag byte are '0'. That is, there is no selection field indicating whether the flag byte exists.
상기 제2단계 과정에서, STUFF_LEN 레지스터의 값이 0이 아니면, PSI를 수정하는 과정에서 섹션의 길이가 감소한 것이다. 따라서, 처리중인 패킷에 이미 어댑테이션 필드가 있으면 트랜스포트 패킷을 출력한 후 어댑테이션 필드를 확장하고 어댑테이션 필드가 없으면 트랜스포트 패킷을 출력한 후 어댑테이션 필드를 새로 삽입한다. 특히, 어댑테이션 필드를 새로 삽입하는 경우에는 트랜스포트 패킷 헤더의 4번째 바이트에 포함된 adaptation_field_control 필드의 값을 수정해서 출력해 야 한다. 상기 adaptation_field_control 필드는 2비트로 구성되며, 이중 상위 비트는 어댑테이션 필드의 유무를 나타낸다. 상기 어댑테이션 필드를 새로 삽입하는 경우에는 원래 이 값이 '0'으로 되어 있는 것을 '1'로 수정하여 어댑테이션 필드가 존재함을 나타내도록 해야 한다.In the second step, if the value of the STUFF_LEN register is not 0, the section length is reduced in the process of modifying the PSI. Therefore, if the adaptation field already exists in the packet being processed, the transport packet is output and then the adaptation field is expanded. If the adaptation field is not present, the adaptation field is newly inserted after the transport packet is output. In particular, when a new adaptation field is inserted, the value of the adaptation_field_control field included in the fourth byte of the transport packet header should be modified and output. The adaptation_field_control field consists of 2 bits, of which the higher bits indicate the presence of an adaptation field. In the case of newly inserting the adaptation field, it is necessary to modify the original value of '0' to '1' to indicate that the adaptation field exists.
상기 어댑테이션 필드를 보정하기 위해, 우선, 버퍼 1(500)에서 어댑테이션 필드의 첫부분에 위치한 adaptation_field_length를 읽어서 STUFF_LEN 레지스터에 설정된 값만큼 증가시킨 후 출력한다.In order to correct the adaptation field, first, the adaptation_field_length located at the beginning of the adaptation field is read from the
다음에는 버퍼 1(500)에서 상기 어댑테이션 필드의 원래 데이터(이미 스터핑 바이트가 포함되어 있었다면 이를 포함)를 차례대로 출력한다. 상기 버퍼 1(500)에는 어댑테이션 필드에 바로 이어서 트랜스포트 패킷의 페이로드가 위치하지만, 이를 출력하는 대신 AF 변환기(621)가 먼저 스터핑 바이트를 필요한 개수만큼 출력한다. Next, the
이때, 원래의 adaptation_field_length가 '0'이었다면 추가되는 스터핑 바이트의 수는 (STUFF_LEN - 1)이고, 그외의 경우는 STUFF_LEN이다.At this time, if the original adaptation_field_length is '0', the number of added stuffing bytes is (STUFF_LEN-1), and otherwise, STUFF_LEN.
도 7은 본 발명에 따라 버퍼 0와 버퍼 1에 저장되는 내용, 그리고 최종 출력 결과를 예시한 것으로, 어댑테이션 필드가 없는 경우를 나타내었다.FIG. 7 illustrates the contents stored in the
도 7의 (a)는 버퍼 0(100)에 저장된 패킷 내용을 나타낸 것이며, 상기 버퍼 0(100)에서 제거하고자 하는 정보들을 전술한 방법에 따라 제거하여 도 7의 (b)와 같이, 버퍼 1(500)에 저장된다. 7 (a) shows the contents of packets stored in buffer 0 (100), and the information to be removed in buffer 0 (100) is removed according to the method described above, and as shown in (b) of FIG. Stored at 500.
이후, 어댑테이션 필드를 이용하여 패킷의 길이를 맞춘후 출력하게 되는데, 이때, 도 7과 같이, 어댑테이션 필드가 존재하지 않는 경우에는 어댑테이션 필드를 새로 삽입한다.Thereafter, the packet length is adjusted using the adaptation field and then output. When the adaptation field does not exist, as shown in FIG. 7, the adaptation field is newly inserted.
이를 위해, AF 변환기(621)내의 STUFF_LEN이 '1'인 경우, 즉 1바이트 길이의 어댑테이션 필드가 필요한 경우에는 전술한 바와 같이 adaptation_field_length만을 가진 어댑테이션 필드를 삽입하기 위해 '0'을 출력하면 된다.To this end, when STUFF_LEN in the
상기 STUFF_LEN이 '2'인 경우, 즉 2바이트 길이의 어댑테이션 필드가 필요한 경우에는 adaptation_field_length와 플래그 바이트만을 갖는 어댑테이션 필드를 삽입하기 위해 '1'과 '0'을 차례로 출력하면 된다.When the STUFF_LEN is '2', that is, when an adaptation field having a 2-byte length is required, '1' and '0' may be sequentially output to insert an adaptation field having only an adaptation_field_length and a flag byte.
상기 STUFF_LEN이 '2'보다 큰 경우, 즉 2보다 긴 어댑테이션 필드는 adaptation_field_length로 (STUFF_LEN-1), 플래그 바이트로 '0'을 차례로 출력하고, 이어서 (STUFF_LEN-2)만큼의 스터핑 바이트를 출력한다.When the STUFF_LEN is larger than '2', that is, an adaptation field longer than 2 is outputted with adaptation_field_length (STUFF_LEN-1), followed by '0' as flag bytes, and then stuffing bytes equal to (STUFF_LEN-2).
상기 AF 변환기(621)에 의해 어댑테이션 필드가 모두 출력된 이후에 나머지 데이터(트랜스포트 패킷의 페이로드)를 읽어서 출력한다. After all of the adaptation fields are output by the
따라서, 도 7의 (c)와 같이, 패킷의 제거된 빈 공간만큼 어댑테이션 필드가 확장되고, 나머지 데이터가 출력되는 형태를 갖게 된다.Therefore, as shown in FIG. 7C, the adaptation field is extended by the removed empty space of the packet, and the remaining data is output.
도 8은 본 발명에 따른 버퍼 0과 버퍼 1에 저장되는 내용, 그리고 최종 출력 결과를 예시한 것으로, 트랜스포트 패킷에 어댑테이션 필드가 삽입되어 있는 경우를 나타내었다.FIG. 8 illustrates the contents stored in
도 8과 같이, 트랜스포트 패킷에 어댑테이션 필드가 삽입되어 있는 경우에는, 상기 삽입된 어댑테이션 필드를 변환 과정에서 발생한 빈 공간만큼 확장하여 사용한다.As shown in FIG. 8, when the adaptation field is inserted in the transport packet, the inserted adaptation field is extended and used as much as the empty space generated during the conversion process.
이때에는 adaptation_field_length로 (STUFF_LEN-1), 플래그 바이트로 '0'을 출력한 이후에 (STUFF_LEN-2)만큼의 스터핑 바이트를 출력한다.In this case, after outputting (STUFF_LEN-1) as the adaptation_field_length and '0' as the flag byte, the stuffing bytes of (STUFF_LEN-2) are output.
이후, 나머지 데이터를 읽어서 출력함으로써 도 8의 (c)와 같은 최종 출력 결과를 얻게 된다.Then, the final output result as shown in FIG. 8C is obtained by reading and outputting the remaining data.
한편, 각 섹션에서 마지막에 위치한 CRC 32값 직전까지의 데이터는버퍼 1(500)에서 읽힌 그대로 출력되며, 이와 동시에 CRC 32 발생기(623)를 통과하여 해당 섹션을 위한 CRC 32값을 새로 생성한다.On the other hand, the data up to immediately before the
상기 값은 버퍼 1(500)에서 섹션의 끝에 위치한 CRC 32값 대신 출력된다. 즉, 상기 버퍼 1(500)에 저장된 원래의 값은 PSI 수정 이전의 내용에 대해 얻어진 값이기 때문에, 새로 수정된 내용에 대한 CRC 32값과는 맞지 않게 되므로, 새로이 생성한 것이다.The value is output instead of the
이상의 모든 과정은 소프트웨어로 PROG_NUM 레지스터와 ES_MASK 레지스터를 설정함으로써 제어 가능하고, 나머지 SEC_LEC_PTR, SEC_LEN, SKIP_LEN, STUFF_LEN, CRC 32 레지스터들은 내부 동작시 하드웨어로 설정된다.All the above processes can be controlled by setting PROG_NUM register and ES_MASK register in software, and the remaining SEC_LEC_PTR, SEC_LEN, SKIP_LEN, STUFF_LEN, and
상기 PROG_NUM 레지스터와 ES_MASK 레지스터는 PAT 또는 PMT를 새로 생성할때 각 테이블의 내용에 따라 재설정해주면 된다.The PROG_NUM register and the ES_MASK register may be reset according to the contents of each table when a PAT or PMT is newly generated.
본 발명은 상술한 실시예에 한정되지 않으며, 첨부된 청구범위에서 알 수 있는 바와 같이 본 발명이 속한 분야의 통상의 지식을 가진 자에 의해 변형이 가능하고 이러한 변형은 본 발명의 범위에 속한다. The present invention is not limited to the above-described embodiments, and as can be seen in the appended claims, modifications can be made by those skilled in the art to which the invention pertains, and such modifications are within the scope of the present invention.
상기에서 설명한 본 발명에 따른 PSI 변환 장치 및 방법의 효과를 설명하면 다음과 같다.The effects of the PSI conversion apparatus and method according to the present invention described above are as follows.
첫째, 저장 및 재전송을 위해 가공된 트랜스포트 스트림에서 프로그램 정보가 상기 가공된 트랜스포트 스트림의 내용을 반영하게 되어 정상적인 트랜스포트 스트림의 기능을 수행하게 하는 효과가 있다.First, program information in a processed transport stream for storage and retransmission reflects the contents of the processed transport stream, thereby effecting the function of a normal transport stream.
둘째, 프로그램 정보의 변환 과정이 몇 개의 레지스터만으로 제어 가능하므로 소프트웨어의 부하를 줄이는 효과가 있다.Second, since the conversion process of the program information can be controlled by only a few registers, the software load is reduced.
셋째, 버퍼의 추가 없이 PSI 변환 장치를 구성하여 하드웨어 비용의 증가가 크지 않고, 종래 시스템 디코더에 기능을 추가한 형태로써 하드웨어 구조 변경도 크지 않은 효과가 있다.Third, there is no significant increase in hardware cost by constructing a PSI converter without adding a buffer, and there is an effect in that the hardware structure is not changed significantly by adding a function to a conventional system decoder.
Claims (11)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050025586A KR101141644B1 (en) | 2005-03-28 | 2005-03-28 | Apparatus and Method of PSI converting |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050025586A KR101141644B1 (en) | 2005-03-28 | 2005-03-28 | Apparatus and Method of PSI converting |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060103717A true KR20060103717A (en) | 2006-10-04 |
KR101141644B1 KR101141644B1 (en) | 2012-05-17 |
Family
ID=37623594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050025586A KR101141644B1 (en) | 2005-03-28 | 2005-03-28 | Apparatus and Method of PSI converting |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101141644B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101228114B1 (en) * | 2007-01-24 | 2013-02-01 | 삼성전자주식회사 | Apparatus and method for modifying TS program information, and recording device using the same |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR0152046B1 (en) * | 1995-04-29 | 1998-10-15 | 김광호 | Ts decoder |
KR100354536B1 (en) | 1998-12-30 | 2002-12-26 | 삼성전자 주식회사 | Looping PSI Parsing Method and Its Apparatus |
KR100532278B1 (en) * | 2003-07-31 | 2005-11-29 | 삼성전자주식회사 | Mpts-spts splitting apparatus |
-
2005
- 2005-03-28 KR KR1020050025586A patent/KR101141644B1/en active IP Right Grant
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101228114B1 (en) * | 2007-01-24 | 2013-02-01 | 삼성전자주식회사 | Apparatus and method for modifying TS program information, and recording device using the same |
Also Published As
Publication number | Publication date |
---|---|
KR101141644B1 (en) | 2012-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6864128B6 (en) | Transmission method, reception method, transmission device, and reception device | |
US20210250394A1 (en) | Transmission method, reception method, transmission apparatus, and reception apparatus | |
KR100226528B1 (en) | Decoder for compressed and multiplexed video and audio data | |
US8634416B2 (en) | Receiving apparatus for digital broadcasting signal and receiving/recording/reproducing apparatus thereof | |
JP2019118076A (en) | Packet conversion device | |
JP4349533B2 (en) | Flexible multiplexed signal transmission system | |
US7940799B2 (en) | Code conversion method and device thereof | |
WO2015050175A1 (en) | Receiving device and receiving method | |
EP0933949B1 (en) | Transmitting system, transmitting apparatus, recording and reproducing apparatus | |
US8861519B2 (en) | Data filtering apparatus and data filtering method | |
US7346054B2 (en) | Method and system for co-relating transport packets on different channels using a cyclic redundancy check (CRC) | |
US8605599B2 (en) | Method and apparatus for processing asynchronous audio stream | |
US8023409B2 (en) | Method and system for reconfigurable pattern filtering engine | |
US20050265699A1 (en) | Information recording device and information recording method | |
US7664113B2 (en) | Apparatus and methods for system multiplexing and program element identification | |
JP3622451B2 (en) | Data processing apparatus, data processing method, and recording medium | |
KR101141644B1 (en) | Apparatus and Method of PSI converting | |
TWI387269B (en) | Packet processing apparatus and packet processing method | |
US20070140390A1 (en) | Method and system for programmable filtering offset | |
EP1605687B1 (en) | System for receiving packet streams | |
US7050436B1 (en) | Device and method for processing a stream of data | |
JP4327561B2 (en) | Digital broadcast receiving apparatus and control method thereof | |
KR100698149B1 (en) | Method and Apparatus for Section data filtering | |
TWI762980B (en) | Method for debugging digital stream and circuit system thereof | |
KR100226826B1 (en) | Decoding apparatus of a satellite broadcasting receiver and method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20160324 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20170314 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20180314 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20190314 Year of fee payment: 8 |