Article sections

    DCP
    영화의 디지털 상영을 위해 제정된 규약입니다.
    처음에는 임시 규격으로 업계에서 만든 ‘Inter OP’ 규격으로 시작했고,
    이제는 정식 규격이 SMPTE 규격으로 정해 졌습니다….만,
    여전히 기존 장비때문에 업계는 interOP로 통용되고 있습니다.
    DCP는
    파일 형식은 MXF, 색공간은 XYZ, 코덱은 JPEG-2000으로 압축된 동영상과,
    마찬가지로 MXF 형식에 48Khz, 24bit, 6채널(5.1채널) 무압축의 소리,
    그리고 각각의 항목들의 설명과 상영방법, 자막 등을 XML형식으로 적어서
    한 폴더에 넣게 되어 있습니다.
    배급과정에서의 데이터 유출을 방지하기 위해
    AES128bit 알고리즘을 이용해서 데이터를 암호화 하고
    각 상영장비별로 키파일을 전송해 상영을 가능하게 하는 컨텐츠 보호구조를 가지고 있으며,
    위의 스펙보다는 사실 이 암호화로 미디어 장악력을 유지하려는게 DCP의 본질입니다.
    즉, 상영이외에는 쓰지 못하게 만드는게 목표인 형식이고
    그렇기 때문에 다른 용도의 사용이나 다른 포맷으로의 전환은 못하는게 정상입니다.
    이런용도로 만들어진 규격이므로 후반작업의 마스터 형식으로는 적합하지 않습니다.
    요즘 들어서는 DNxHD나 Prores같은 코덱의 동영상 파일로도 나오기도 하지만
    여전히 영화용 작업도구들의 출력은 기본적으로 DPX입니다.
    이게 마스터 파일이죠.
    DCP는 이런 마스터 파일로부터 인코딩해서 만드는,
    재생전용의 복사본이라고 보시면 됩니다.
    JPEG2000도 공개 코덱이고, MXF도 공개 포맷이고,
    소리도 이전의 돌비라이센스가 필요 없는 무압축이라
    누구나 형식만 지킨다면 DCP를 만들 수 있습니다만,
    현실적으로는 이걸 만드는 도구가 쉽게 접할 수 없는 도구들이라
    대부분 전문 업체에 제작을 의뢰하고 있습니다.
    또한 여러가지 포맷을 추가한 SMPTE DCP와는 달리
    InterOP 규격은 오로지 24fps만을 지원하므로
    ‘디지털 개봉’을 하려면 영상데이터는 반드시 24fps로 준비되어 있어야 합니다.
    29.97fps로 제작된 영상같은 경우에는 상영조차 못한다는 의미입니다.

     

    http://idjhh.springnote.com/pages/319305 idjhh님의 노트
    DPX File 포맷
    이 페이지 작성에 참여하기
    메뉴
    DPX 파일 포맷

    참조 : http://www.cineon.com/ff_draft.php

     

    Cineon 의 영상 포맷은 ANSI/SMPTE DPX 파일 포맷과 유사하다. 두 포맷 모두 다양한 헤더 길이를 가지며 영상 데이터에 대해 같은 포맷을 가진다.

    그렇지만 헤더들의 포맷은 다르다. DPX 의 파일 헤더는 다른 표준을 수용할 수 있는 다양한 이미지 헤더가 있어 flexble한 특성을 갖는다.

     

    Overview of the DPX File Structure
    DPX image 는 4개의 파트로 구성된다.

    1. generic file information header
    A fixed format, predefined, general information header cosisting of several sections

    2. motion picture and television industry specific header
    A fixed format, industry specific header

    3. User-defined information
    Variable length, user defined data

    4. Image Data

    Header Data Structure
    There are five header types, not all of which are required, some of which are industry specific. Brief(간단한) description are given of the header fields. For a more in depth description, please obtain the SMPTE specification.

     

     

    Generic Image Data
    Generic Image Data Header 는 영상에 관한 일반적인 정보를 포함하고 있다. ( 헤더파일의 길이, 어떤 영상인지.., 영상이 얼마나 큰지…등등등.. )

    typedef struct file_information
    {
    U32 magic_num; /* magic number 0x53445058 (SDPX) or 0x58504453 (XPDS) */
    U32 offset; /* offset to image data in bytes */
    ASCII vers[8]; /* which header format version is being used (v1.0)*/
    U32 file_size; /* file size in bytes */
    U32 ditto_key; /* read time short cut – 0 = same, 1 = new */
    U32 gen_hdr_size; /* generic header length in bytes */
    U32 ind_hdr_size; /* industry header length in bytes */
    U32 user_data_size; /* user-defined data length in bytes */
    ASCII file_name[100]; /* iamge file name */
    ASCII create_time[24]; /* file creation date “yyyy:mm:dd:hh:mm:ss:LTZ” */
    ASCII creator[100]; /* file creator’s name */
    ASCII project[200]; /* project name */
    ASCII copyright[200]; /* right to use or copyright info */
    U32 key; /* encryption ( FFFFFFFF = unencrypted ) */
    ASCII Reserved[104]; /* reserved field TBD (need to pad) */
    } FileInformation;

     

    Image Information Header
    Image header 는 영상에 관한 specific 한 정보를 포함한다. ( 채널 수, Resolution 등등 )

    typedef struct _image_information
    {
    U16 orientation; /* image orientation */
    U16 element_number; /* number of image elements */
    U32 pixels_per_line; /* or x value */
    U32 lines_per_image_ele; /* or y value, per element */
    struct _image_element
    {
    U32 data_sign; /* data sign (0 = unsigned, 1 = signed ) */
    /* “Core set images are unsigned” */
    U32 ref_low_data; /* reference low data code value */
    R32 ref_low_quantity; /* reference low quantity represented */
    U32 ref_high_data; /* reference high data code value */
    R32 ref_high_quantity;/* reference high quantity represented */
    U8 descriptor; /* descriptor for image element */
    U8 transfer; /* transfer characteristics for element */
    U8 colorimetric; /* colormetric specification for element */
    U8 bit_size; /* bit size for element */
    U16 packing; /* packing for element */
    U16 encoding; /* encoding for element */
    U32 data_offset; /* offset to data of element */
    U32 eol_padding; /* end of line padding used in element */
    U32 eo_image_padding; /* end of image padding used in element */
    ASCII description[32]; /* description of element */
    } image_element[8]; /* NOTE THERE ARE EIGHT OF THESE */

    U8 reserved[52]; /* reserved for future use (padding) */
    } Image_Information;

     

     

    Image Orientation Information
    typedef struct _image_orientation
    {
    U32 x_offset; /* X offset */
    U32 y_offset; /* Y offset */
    R32 x_center; /* X center */
    R32 y_center; /* Y center */
    U32 x_orig_size; /* X original size */
    U32 y_orig_size; /* Y original size */
    ASCII file_name[100]; /* source image file name */
    ASCII creation_time[24]; /* source image creation date and time */
    ASCII input_dev[32]; /* input device name */
    ASCII input_serial[32]; /* input device serial number */
    U16 border[4]; /* border validity (XL, XR, YT, YB) */
    U32 pixel_aspect[2]; /* pixel aspect ratio (H:V) */
    U8 reserved[28]; /* reserved for future use (padding) */
    } Image_Orientation;

    Industry Headers-1
    typedef struct _motion_picture_film_header
    {
    ASCII film_mfg_id[2]; /* film manufacturer ID code (2 digits from film edge code) */
    ASCII film_type[2]; /* file type (2 digits from film edge code) */
    ASCII offset[2]; /* offset in perfs (2 digits from film edge code)*/
    ASCII prefix[6]; /* prefix (6 digits from film edge code) */
    ASCII count[4]; /* count (4 digits from film edge code)*/
    ASCII format[32]; /* format (i.e. academy) */
    U32 frame_position; /* frame position in sequence */
    U32 sequence_len; /* sequence length in frames */
    U32 held_count; /* held count (1 = default) */
    R32 frame_rate; /* frame rate of original in frames/sec */
    R32 shutter_angle; /* shutter angle of camera in degrees */
    ASCII frame_id[32]; /* frame identification (i.e. keyframe) */
    ASCII slate_info[100]; /* slate information */
    U8 reserved[56]; /* reserved for future use (padding) */
    } Motion_Picture_Film;

     

    Industry Headers-2
    typedef struct _television_header
    {
    U32 tim_code; /* SMPTE time code */
    U32 userBits; /* SMPTE user bits */
    U8 interlace; /* interlace ( 0 = noninterlaced, 1 = 2:1 interlace*/
    U8 field_num; /* field number */
    U8 video_signal; /* video signal standard (table 4)*/
    U8 unused; /* used for byte alignment only */
    R32 hor_sample_rate; /* horizontal sampling rate in Hz */
    R32 ver_sample_rate; /* vertical sampling rate in Hz */
    R32 frame_rate; /* temporal sampling rate or frame rate in Hz */
    R32 time_offset; /* time offset from sync to first pixel */
    R32 gamma; /* gamma value */
    R32 black_level; /* black level code value */
    R32 black_gain; /* black gain */
    R32 break_point; /* breakpoint */
    R32 white_level; /* reference white level code value */
    R32 integration_times; /* integration time(s) */
    U8 reserved[76]; /* reserved for future use (padding) */
    } Television_Header;

    in Movie