프로그램 지정 정보(PSI)는 MPEG 전송 스트림에서 프로그램 정보를 전달하는 데 사용되는 여러 테이블의 구조와 식별자를 정의한다. PSI는 테이블 섹션, 디스크립터, PSI 테이블 종류, PSI 식별자로 구성된다. PSI 테이블은 테이블 ID, 섹션 길이, 버전 번호 등 공통 필드를 가지며, 디스크립터는 추가 메타데이터를 제공한다. 주요 PSI 테이블로는 프로그램 연관 테이블(PAT), 프로그램 맵 테이블(PMT), 조건부 접근 테이블(CAT), 네트워크 정보 테이블(NIT)이 있다. 각 테이블은 고유한 ID로 식별되며, 스트림 유형과 디스크립터 태그를 통해 세부 정보를 나타낸다.
더 읽어볼만한 페이지
MPEG - ATSC ATSC는 디지털 텔레비전 방송 표준을 개발하는 미국 기관으로, 1996년 ATSC 1.0 표준이 채택된 후 H.264 코덱을 지원하는 개정판이 승인되었으며, 미국을 비롯한 여러 국가에서 디지털 방송 전환에 사용되었으나 특허 문제와 기술적 한계, 국가별 적용 차이 등의 이슈가 있고, 최근에는 ATSC 3.0이 개발되어 도입되고 있다.
MPEG - MPEG-1 오디오 레이어 II MPEG-1 오디오 레이어 II (MP2)는 디지털 오디오 압축 표준으로, 디지털 오디오 방송, 디지털 멀티미디어 방송, 디지털 비디오 방송 등 다양한 분야에서 사용되며, MUSICAM 오디오 코덱을 기반으로 하고, MP3와 비교하여 시간 해상도가 높고 오류에 대한 강인성이 강한 특징을 가진다.
컴퓨터 프로그래밍 - 순서도 순서도는 컴퓨터 알고리즘이나 프로세스를 시각적으로 표현하는 도구로, 흐름 공정 차트에서 기원하여 컴퓨터 프로그래밍 분야에서 알고리즘을 설명하는 데 사용되며, 다양한 종류와 소프트웨어 도구가 존재한다.
컴퓨터 프로그래밍 - 의사코드 의사코드는 컴퓨터 과학 및 수치 계산 분야에서 알고리즘을 설명하기 위해 사용되는 비표준적인 언어로, 자연어와 프로그래밍 언어의 요소를 혼합하여 알고리즘의 논리적 흐름을 이해하기 쉽게 하고 프로그래머가 실제 코드로 구현하기 전에 알고리즘을 설계하고 검토하는 데 유용하다.
영상 코덱 - VP9 VP9는 구글이 개발한 오픈 소스 비디오 코덱으로, VP8보다 압축 효율을 높이고 HEVC보다 나은 성능을 목표로 개발되었으며, WebM 형식으로 사용되고 주요 웹 브라우저와 넷플릭스, 유튜브 등에서 지원했으나 AV1의 등장으로 개발이 중단되었다.
영상 코덱 - H.262/MPEG-2 파트 2 H.262/MPEG-2 파트 2는 디지털 TV 및 DVD 등에 사용되는 영상 압축 표준으로, HDTV 카메라의 비압축 영상 스트림을 효율적으로 압축하기 위해 다양한 화면 샘플링 기술을 활용하며, DVD-Video, HDV, XDCAM 등에서 활용된다.
프로그램 지정 정보
2. PSI 구조
PSI는 프로그램 연결 테이블(PAT), 프로그램 맵 테이블(PMT), 조건부 접근 테이블(CAT) 등 여러 테이블로 구성된다. 각 테이블은 디지털 방송 수신 시 채널 및 프로그램 정보를 해석하는 데 필요한 특정 정보를 담고 있다.[2][3] PSI 테이블은 TS 패킷 내에서 포인터 필드를 통해 식별된다.
2. 1. 테이블 섹션 (Table Sections)
PSI 테이블은 포인터, 테이블 헤더, 테이블 구문 섹션, CRC32 등의 필드로 구성된다.
테이블 섹션 구성
구성
설명
포인터
TS 패킷 내에서 PSI 테이블의 시작 위치를 알려준다.
테이블 헤더
테이블 식별자, 섹션 구문 지시자, 섹션 길이 등 테이블의 기본 정보를 담고 있다.
테이블 구문 섹션
테이블 ID 확장, 버전 번호, 섹션 번호 등 테이블의 상세 정보를 포함한다.
CRC32
데이터 무결성 검사를 위한 체크섬 값이다.
2. 1. 1. 포인터 (Pointer)
TS 패킷 내에서 PSI 테이블의 시작 위치를 알려주는 역할을 한다.
이름
비트 수
설명
포인터 필드
8
TS 헤더의 payload_unit_start_indicator 비트에 의해 신호되는 TS 패킷 페이로드 시작 부분에 존재한다. 테이블 페이로드 데이터의 시작 부분 전에 패킷 정렬 바이트 또는 콘텐츠를 설정하는 데 사용된다.[2][3]
포인터 채움 바이트
N*8
포인터 필드가 0이 아닌 경우, 0xFF로 설정된 포인터 필드 번호 정렬 패딩 바이트이거나 TS 패킷(전자 프로그램 가이드)에 걸쳐 있는 이전 테이블 섹션의 끝이다.[2][3]
2. 1. 2. 테이블 헤더 (Table Header)
테이블 헤더[2][3] TS 패킷 페이로드의 끝까지 반복[1]
이름
비트 수
설명
테이블 ID
8
구문 섹션 및 기타 포함된 데이터의 구조를 정의하는 테이블 식별자입니다. 예외적으로, 이전 테이블 섹션 바로 다음에 오는 바이트이고 255(0xFF)로 설정된 경우, 테이블 섹션이 여기서 끝나고 나머지 TS 패킷 페이로드는 255(0xFF)로 채워져야 함을 나타냅니다. 결과적으로, 값 255는 테이블 식별자에 사용될 수 없습니다.[1]
섹션 구문 지시자
1
구문 섹션이 섹션 길이를 따르는지 여부를 나타내는 플래그입니다. PAT, PMT 및 CAT는 모두 이 값을 1로 설정합니다.
개인 비트
1
PAT, PMT 및 CAT는 모두 이 값을 0으로 설정합니다. 다른 테이블은 이 값을 1로 설정합니다.
예약된 비트
2
3(0x03)으로 설정 (모든 비트 켜짐)
섹션 길이 사용되지 않은 비트
2
0으로 설정 (모든 비트 꺼짐)
섹션 길이
10
구문 섹션(CRC32 값 포함) 및/또는 테이블 데이터에 대해 따르는 바이트 수입니다. 이 바이트는 1021 값을 초과해서는 안 됩니다.
구문 섹션/테이블 데이터
N*8
섹션 길이가 0이 아닌 경우, 이는 구문 및 데이터 바이트의 섹션 길이 수입니다.
2. 1. 3. 테이블 구문 섹션 (Table Syntax Section)
테이블 구문 섹션
이름
비트 수
설명
테이블 ID 확장
16
정보 제공 전용 식별자이다. PAT는 이 값을 전송 스트림 식별자에 사용하고 PMT는 프로그램 번호에 사용한다.
예약된 비트
2
0x03으로 설정 (모든 비트 켜짐)
버전 번호
5
구문 버전 번호이다. 데이터가 변경되고 32보다 큰 값에 대해 오버플로가 발생하면 증가한다.
현재/다음 지시자
1
데이터가 현재 유효한지 또는 향후 사용을 위한 것인지 나타낸다. 비트가 켜져 있으면 데이터를 현재 사용해야 한다.
섹션 번호
8
관련 테이블 시퀀스에서 이 테이블이 어떤 테이블인지 나타내는 인덱스이다. 첫 번째 테이블은 0부터 시작한다.
마지막 섹션 번호
8
시퀀스에 있는 마지막 테이블이 어떤 테이블인지 나타낸다.
테이블 데이터
N*8
테이블 식별자에 의해 정의된 데이터이다.
CRC32
32
포인터 필드, 포인터 채움 바이트 및 후행 CRC32를 제외한 전체 테이블의 체크섬이다.[2][3]
2. 1. 4. CRC32
CRC32는 데이터 무결성 검사에 사용되는 32비트 체크섬 값이다.[2][3] 이는 포인터 필드, 포인터 채움 바이트 및 CRC32 값을 제외한 전체 테이블 데이터를 바탕으로 계산된다.
2. 2. 디스크립터 (Descriptor)
PSI 테이블 내에서 특정 정보에 대한 추가적인 메타데이터를 제공하는 역할을 한다. 예를 들어, 비디오/오디오 스트림의 형식, 언어 정보, 저작권 정보 등을 담을 수 있다.[2][3]
디스크립터
이름
비트 수
설명
디스크립터 태그
8
태그는 디스크립터 길이 다음에 오는 포함된 데이터의 구조를 정의한다.
디스크립터 길이
8
따라오는 바이트 수이다.
디스크립터 데이터
N*8
디스크립터 태그에 의해 정의된 데이터이다.
3. PSI 테이블 종류
PSI(프로그램 지정 정보)는 PAT, PMT, CAT, NIT(Network Information Table) 등 여러 종류의 테이블로 구성된다. 각 테이블은 디지털 방송 수신기가 프로그램을 올바르게 찾고 해독하는 데 필요한 정보를 제공한다.
PAT (Program Association Table): 전송 스트림 내의 모든 프로그램을 나열하고, 각 프로그램에 해당하는 PMT의 PID를 제공한다.
PMT (Program Map Table): 각 프로그램의 구성 요소 (비디오, 오디오, 데이터 등)에 대한 정보를 담고 있으며, 각 구성 요소 스트림의 PID를 제공한다.
CAT (Conditional Access Table): 유료 시청 또는 특정 프로그램 접근과 관련된 정보를 담고 있다.
NIT (Network Information Table): 전송 스트림의 물리적 네트워크 파라미터, 채널 목록 등의 정보를 담고 있다.
3. 1. PAT (Program Association Table)
PAT(프로그램 연관 테이블)는 전송 스트림에서 사용 가능한 모든 프로그램을 나열하며, 각 프로그램은 `program_number`라는 16비트 값으로 식별된다. PAT에 나열된 각 프로그램은 프로그램 맵 테이블(PMT)에 대한 관련 PID 값을 갖는다.
`program_number` 값 0x0000은 네트워크 정보 테이블(NIT)을 찾아볼 PID를 지정하기 위해 예약되어 있다. PAT에 이러한 프로그램이 없는 경우 NIT에 기본 PID 값(0x0010)을 사용해야 한다.
PAT 정보를 포함하는 TS 패킷은 항상 PID 0x0000을 갖는다.
PAT 특정 데이터는 섹션 길이의 끝까지 반복된다.
이름
비트 수
설명
프로그램 번호
16
관련된 PMT의 테이블 ID 확장과 관련이 있다. 0 값은 NIT 패킷 식별자를 위해 예약되어 있다.
예약된 비트
3
0x07(모든 비트 켜짐)로 설정
프로그램 맵 PID
13
관련된 PMT를 포함하는 패킷 식별자
PAT는 PID 0x0000 및 테이블 ID 0x00으로 할당된다. 전송 스트림에는 PID 0x0000을 가진 하나 이상의 TS 패킷이 포함되어 있으며, 이 패킷들 중 일부는 PAT를 형성한다.
PMT는 프로그램에 대한 정보를 담고 있다. 각 프로그램마다 하나의 PMT가 있다. MPEG-2 표준은 단일 PID (단일 전송 스트림 PID는 둘 이상의 프로그램의 PMT 정보를 포함)에서 둘 이상의 PMT 섹션을 전송하는 것을 허용하지만, ATSC 및 SCTE와 같은 대부분의 MPEG-2 "사용자"는 각 PMT가 다른 패킷에 사용되지 않는 별도의 PID로 전송되도록 요구한다.
PMT는 프로그램 번호를 포함하여 전송 스트림에 있는 각 프로그램에 대한 정보를 제공하고, 설명된 MPEG-2 프로그램을 구성하는 기본 스트림을 나열한다. 전체 MPEG-2 프로그램을 설명하는 선택적 디스크립터와 각 기본 스트림에 대한 선택적 디스크립터의 위치도 있다. 각 기본 스트림은 stream_type 값으로 레이블이 지정된다.
PMT 특정 데이터
이름
비트 수
설명
예약된 비트
3
0x07로 설정 (모든 비트 켜짐)
PCR PID
13
프로그램 타임스탬프에서 파생된 스트림의 타이밍에 대한 임의 접근 정확도를 향상시키는 데 사용되는 프로그램 클럭 참조를 포함하는 패킷 식별자이다. 사용하지 않으면 0x1FFF로 설정된다 (모든 비트 켜짐).
예약된 비트
4
0x0F로 설정 (모든 비트 켜짐)
프로그램 정보 길이 사용되지 않은 비트
2
0으로 설정 (모든 비트 꺼짐)
프로그램 정보 길이
10
프로그램 디스크립터에 대해 따르는 바이트 수이다.
프로그램 디스크립터
N*8
프로그램 정보 길이가 0이 아니면, 이는 프로그램 정보 길이 수의 프로그램 디스크립터 바이트이다.
기본 스트림 정보 데이터
N*8
이 프로그램 맵에 사용된 스트림이다.
섹션 길이의 끝까지 반복되는 기본 스트림 특정 데이터
이름
비트 수
설명
스트림 유형
8
이것은 기본 패킷 식별자 내에 포함된 데이터의 구조를 정의한다.
예약된 비트
3
0x07로 설정 (모든 비트 켜짐)
기본 PID
13
스트림 유형 데이터를 포함하는 패킷 식별자이다.
예약된 비트
4
0x0F로 설정 (모든 비트 켜짐)
ES 정보 길이 사용되지 않은 비트
2
0으로 설정 (모든 비트 꺼짐)
ES 정보 길이
10
기본 스트림 디스크립터에 대해 따르는 바이트 수이다.
기본 스트림 디스크립터
N*8
ES 정보 길이가 0이 아니면, 이는 ES 정보 길이 수의 기본 스트림 디스크립터 바이트이다.
이 표는 프로그램과 관련된 기본 스트림의 PID 번호를 포함하며, 이러한 기본 스트림의 유형(비디오, 오디오 등)에 대한 정보를 가지고 있다. 또한 암호화된 다른 모든 스트림에 대한 ECM (자격 제어 메시지) 스트림을 포함할 수도 있다. 이러한 메시지는 암호 키 선택 단계에서 사용되는 정보를 제공한다.
3. 3. CAT (Conditional Access Table)
CAT (Conditional Access Table)는 유료 채널이나 특정 프로그램의 접근 제어 정보를 제공한다. CAT는 EMM (Entitlement Management Message) 스트림의 위치 정보를 포함하며, 셋톱박스는 이를 통해 암호화된 채널의 해독 키를 얻을 수 있다.[1] CAT의 테이블 ID 값은 0x01이다.[1]
CAT는 제한된 스트림의 해독에 사용되는 암호화 키의 조건부 접속 관리에 사용된다.[1] 이 테이블은 사용된 시스템과 관련된 EMM PID의 개인별 정의된 기술자를 포함하며,[1] 네트워크 제공자가 정기적인 키 업데이트를 유지하는 데 사용된다.[1]
3. 4. NIT (Network Information Table)
NIT(Network Information Table)는 전송 스트림 식별자를 네트워크로 그룹화하여 접근 매개변수 및 기타 세부 정보를 제공하는 선택적 테이블이다. ITU-T Rec. H.222 및 ISO/IEC 13818-1[2]에서는 NIT 구조를 정의하지 않지만, 유럽 방송 연합 DVB 규격 ETSI EN 300 468 (DVB-SI)[4]에서 정의한다. H.222에서 이 테이블을 정의하지 않고 언급만 한 이유는 PAT에서 프로그램 번호 0(영)을 예약했기 때문이다.
테이블 ID 확장은 전송 스트림의 디렉토리 목록과 함께 로컬 네트워크를 식별하는 데 사용된다. 디스크립터는 해당 스트림 및 프로그램의 변조, 소스를 나열하는 데 사용된다. 원래 네트워크 식별자는 외국 네트워크의 전송 스트림과 프로그램을 로컬 네트워크에 포함할 수 있도록 하여 네트워크 간에 중복될 수 있는 전송 및 프로그램 ID를 재매핑하지 않도록 한다.
DVB 규격은 전송 패킷 식별자를 16, 전송의 로컬 네트워크의 테이블 식별자를 64로 정의한다. 65의 테이블 식별자는 외국 전송 네트워크에 해당한다. 네트워크 식별자는 [http://www.dvbservices.com/ DVB Services]를 통해 관리되며, 여기서 식별자를 ''Network_ID''와 ''Original_Network_ID'' 두 그룹으로 분리했다.
4. PSI 식별자
PSI(프로그램 지정 정보)는 프로그램 식별자, 프로그램 및 기본 스트림 디스크립터 태그, 기본 스트림 유형 등을 포함한다.
프로그램 식별자 중 테이블 식별자(Table Identifiers)는 전송 스트림의 각 테이블을 8비트 식별자로 구분한다.
사용 중인 테이블 식별자
10진수
16진수
설명
0
0x00
프로그램 연관 섹션 (모든 프로그램 맵 테이블의 디렉토리 목록 포함)
1
0x01
조건부 접근 섹션 (모든 EMM 스트림의 디렉토리 목록 포함)
2
0x02
프로그램 맵 섹션 (모든 기본 스트림의 디렉토리 목록 포함)
3
0x03
전송 스트림 설명 섹션
4
0x04
ISO/IEC 14496 장면 설명 섹션
5
0x05
ISO/IEC 14496 객체 설명 섹션
6
0x06
메타데이터 섹션
7
0x07
ISO/IEC 13818-11 IPMP 제어 정보 (DRM)
8 - 57
0x08 - 0x39
예약됨
58
0x3A
ISO/IEC 13818-6 DSM-CC 다중 프로토콜 캡슐화
59
0x3B
ISO/IEC 13818-6 DSM-CC U-N 메시지
60
0x3C
ISO/IEC 13818-6 DSM-CC 다운로드 데이터 메시지
61
0x3D
ISO/IEC 13818-6 DSM-CC 스트림 설명자 목록
62
0x3E
ISO/IEC 13818-6 DSM-CC 개인적으로 정의됨 (DVB MAC 주소 지정 데이터그램에 사용됨)
63
0x3F
ISO/IEC 13818-6 DSM-CC 주소 지정 가능
64 - 127
0x40 - 0x7F
DVB에서 사용
128 - 143
0x80 - 0x8F
DVB-CSA 및 DigiCipher II/ATSC CA 메시지 섹션 (EMM 및 ECM 스트림에 사용)
144 - 191
0x90 - 0xBF
필요에 따라 다른 데이터 테이블에 할당 가능
192 - 254
0xC0 - 0xFE
DigiCipher II/ATSC/SCTE에서 사용
255
0xFF
금지됨 (널 패딩에 사용)
4. 1. 테이블 식별자 (Table Identifiers)
전송 스트림의 각 테이블은 8비트 테이블 식별자로 식별된다.
사용 중인 식별자
10진수
16진수
설명
0
0x00
프로그램 연관 섹션 (모든 프로그램 맵 테이블의 디렉토리 목록 포함)
1
0x01
조건부 접근 섹션 (모든 EMM 스트림의 디렉토리 목록 포함)
2
0x02
프로그램 맵 섹션 (모든 기본 스트림의 디렉토리 목록 포함)
3
0x03
전송 스트림 설명 섹션
4
0x04
ISO/IEC 14496 장면 설명 섹션
5
0x05
ISO/IEC 14496 객체 설명 섹션
6
0x06
메타데이터 섹션
7
0x07
ISO/IEC 13818-11 IPMP 제어 정보 (DRM)
8 - 57
0x08 - 0x39
예약됨
58
0x3A
ISO/IEC 13818-6 DSM-CC 다중 프로토콜 캡슐화
59
0x3B
ISO/IEC 13818-6 DSM-CC U-N 메시지
60
0x3C
ISO/IEC 13818-6 DSM-CC 다운로드 데이터 메시지
61
0x3D
ISO/IEC 13818-6 DSM-CC 스트림 설명자 목록
62
0x3E
ISO/IEC 13818-6 DSM-CC 개인적으로 정의됨 (DVB MAC 주소 지정 데이터그램에 사용됨)
63
0x3F
ISO/IEC 13818-6 DSM-CC 주소 지정 가능
64 - 127
0x40 - 0x7F
DVB에서 사용
128 - 143
0x80 - 0x8F
DVB-CSA 및 DigiCipher II/ATSC CA 메시지 섹션 (EMM 및 ECM 스트림에 사용)
144 - 191
0x90 - 0xBF
필요에 따라 다른 데이터 테이블에 할당 가능
192 - 254
0xC0 - 0xFE
DigiCipher II/ATSC/SCTE에서 사용
255
0xFF
금지됨 (널 패딩에 사용)
'''SCTE 특정 테이블''':
0xC0 테이블 ID는 프로그램 정보 메시지에 사용된다.
0xC1 테이블 ID는 프로그램 이름 메시지에 사용된다.
PAT가 가리키는 PMT의 PID가 테이블 ID 0x02를 가진 테이블을 포함할 필요는 없다.
PMT를 읽을 때 테이블 ID를 무시하면 나쁜 결과가 초래될 수 있다.
4. 2. 프로그램 및 기본 스트림 디스크립터 태그 (Program and Elementary Stream Descriptor Tags)
각 디스크립터는 8비트 디스크립터 태그로 식별되며, 디스크립터의 종류와 내용을 나타낸다. 다음은 사용 중인 태그들을 표로 정리한 것이다.
사용 중인 태그
십진수
16진수
설명
0 - 1
0x00 - 0x01
예약됨.
2
0x02
ITU-T Rec. H.262, ISO/IEC 13818-2 및 ISO/IEC 11172-2에 대한 비디오 스트림 헤더 매개변수
3
0x03
ISO/IEC 13818-3 및 ISO/IEC 11172-3에 대한 오디오 스트림 헤더 매개변수
[1]
서적
Digital Video Broadcasting (DVB); Specification for Service Information (SI) in DVB systems
http://www.etsi.org/[...]
ETSI
2016-10-13
[2]
간행물
ISO/IEC 13818-1 Information technology --- Generic coding of moving pictures and associated audio information: Systems (MPEG-2)
http://www.iso.org/i[...] [3]
웹사이트
MPEG-2 Pocketguide
http://www.jdsu.com/[...] [4]
문서
ETSI-EN 300 468 Digital Video Broadcasting (DVB); Specification for Service Information (SI) in DVB systems
[5]
웹사이트
Archived copy
http://www.scte.org/[...]
2016-05-13
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.