KR20150106326A - 서브-기록을 생성 및 관리 - Google Patents

서브-기록을 생성 및 관리 Download PDF

Info

Publication number
KR20150106326A
KR20150106326A KR1020147018907A KR20147018907A KR20150106326A KR 20150106326 A KR20150106326 A KR 20150106326A KR 1020147018907 A KR1020147018907 A KR 1020147018907A KR 20147018907 A KR20147018907 A KR 20147018907A KR 20150106326 A KR20150106326 A KR 20150106326A
Authority
KR
South Korea
Prior art keywords
segment
program
recording
record
index
Prior art date
Application number
KR1020147018907A
Other languages
English (en)
Inventor
브라이언 두안 클레벤저
Original Assignee
톰슨 라이센싱
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 톰슨 라이센싱 filed Critical 톰슨 라이센싱
Publication of KR20150106326A publication Critical patent/KR20150106326A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof
    • H04N21/42661Internal components of the client ; Characteristics thereof for reading from or writing on a magnetic storage medium, e.g. hard disk drive
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4334Recording operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording

Abstract

미디어 콘텐츠를 기록 및 재생하기 위한 각각의 시스템 및 방법이 제공된다. 미디어 콘텐츠를 기록하기 위한 시스템은 미디어 콘텐츠에 대응하는 전송 스트림 데이터 및 인덱스 데이터를 액세스 포인트 경계에 주기적인 간격으로 이산 파일로 분할하기 위한 분할기(303)를 포함한다. 각각의 이산 파일은 각각의 전송 세그먼트 및 각각의 인덱스 세그먼트를 포함한다. 또한, 시스템은 이산 파일을 저장하기 위한 세그먼트 저장 장치(304)를 포함한다. 분할기(303)는 전송 스트림 데이터 및 인덱스 데이터를 분할하여, 하나의 프로그램 또는 내부에 다중 프로그램을 포함하는 기록 세션에 대해서, 프로그램 또는 기록 세션 및 각각의 다중 프로그램은 별개의 프로그램으로서 기록된다.

Description

서브-기록을 생성 및 관리{CREATING AND MANAGING SUB-RECORDINGS}
본 출원은, 2012년 1월 9일자로 미국 출원된 미국 가출원 제 61/584,352 호의 이득을 주장하며, 이 전체 내용이 본 명세서에 참조로 포함된다.
본 원리는 일반적으로 미디어 콘텐츠를 기록하는 것에 관한 것이며, 특히, 서브-기록을 생성 및 관리하는 것에 관한 것이다.
디지털 비디오 레코더(DVR)의 핵심 기능은 비디오 콘텐츠(및, 임의의 오디오 콘텐츠가 이에 대응하지만, 간결성을 위해 종합하여 "비디오 콘텐츠"로서 지칭)와 같은 방송 멀티미디어 콘텐츠를 기록 및 재생하는 것이다. 대부분의 DVR은 타임-시프트 기능을 허용한다. 타임-시프트 기능은 본질적으로 라이브 방송 콘텐츠의 롤링 버퍼이다. 이는 일시 정지, 되감기, 및 빨리 감기와 같은 트릭 모드 동작이 라이브 방송 콘텐츠에 사용될 수 있도록 한다. 전형적인 타임-시프트 구현은 사용자가 버퍼를 트릭 모드로 탐색할 수 있도록, 라이브 방송 콘텐츠의 마지막 30분의 버퍼를 유지할 것이다.
비디오 콘텐츠의 저장은 상당한 저장 공간을 필요로 하기 때문에, 타임-시프트 기능에 사용되는 비디오 데이터는 대부분의 구현에서 하드디스크에 통상적으로 저장된다. 이는 새로운 데이터가 타임-시프트 기록에 추가될 때, 이전 데이터가 종료에서 절단되어야 하는 문제를 제시한다. 대부분의 파일 시스템은 파일의 끝에서 새로운 데이터의 효율적인 삽임을 허용하지만, 대부분의 파일 시스템은 파일의 시작에서 데이터를 절단하기 위한 효율적인 메커니즘을 제공하지 않는다. 일부의 DVR은 파일의 끝에서 삽입 뿐만 아니라 파일의 시작에서 절단을 제공하는 특별히 설계된 파일 시스템을 사용하여 문제를 해결한다. 그러나, 특별히 설계된 파일 시스템의 사용은 DVR에 또한 사용되는 표준 파일 시스템과 그러한 특별히 설계된 파일 시스템의 통합을 포함하는데, 이에 제한하지 않는다.
종래의 기술의 상기 및 다른 결함 및 단점들은 서브-기록을 생성 및 관리하는 것에 관한 본 원리에 의해 다루어진다.
본 원리의 한 관점에 따라, 미디어 콘텐츠를 기록하기 위한 시스템이 제공된다. 시스템은 미디어 콘텐츠에 대응하는 전송 스트림 데이터 및 인덱스 데이터를 액세스 포인트 경계에 주기적인 간격으로 이산 파일로 분할하기 위한 분할기를 포함한다. 각각의 이산 파일은 각각의 전송 세그먼트 및 각각의 인덱스 세그먼트를 포함한다. 시스템은 또한 이산 파일을 저장하기 위한 세그먼트 저장 장치를 포함한다. 분할기는 전송 스트림 데이터 및 인덱스 데이터를 분할하여, 하나의 프로그램 또는 내부에 다중 프로그램을 포함하는 기록 세션에 대해서, 프로그램 또는 기록 세션 및 각각의 다중 프로그램은 별개의 프로그램으로서 기록된다.
본 원리의 다른 관점에 따라, 미디어 콘텐츠를 기록하기 위한 방법이 제공된다. 이 방법은 미디어 콘텐츠에 대응하는 전송 스트림 데이터 및 인덱스 데이터를 액세스 포인트 경계에 주기적인 간격으로 이산 파일로 분할하는 단계를 포함한다. 각각의 이산 파일은 각각의 전송 세그먼트 및 각각의 인덱스 세그먼트를 포함한다. 본 발명은 또한 이산 파일을 세그먼트 저장 장치에 저장하는 단계를 포함한다. 전송 스트림 데이터 및 인덱스 데이터가 분할되어, 하나의 프로그램 또는 내부에 다중 프로그램을 포함하는 기록 세션에 대해서, 프로그램 또는 기록 세션 및 각각의 다중 프로그램은 별개의 프로그램으로서 기록된다.
본 원리의 또 다른 관점에 따라, 미디어 콘텐츠를 재생하기 위한 시스템이 제공된다. 본 시스템은 이산 파일을 저장하기 위한 세그먼트 저장 장치를 포함한다. 각각의 이산 파일은 미디어 콘텐츠에 대응하는 전송 스트림 데이터 및 인덱스 데이터로부터 얻은 각각의 전송 세그먼트 및 각각의 인덱스 세그먼트를 포함한다. 본 시스템은 또한 전송 세그먼트의 연속 재생을 위해 이산 파일로부터 전송 세그먼트들을 재구성하기 위한 역분할기를 포함한다. 하나의 프로그램 또는 내부에 다중 프로그램을 포함하는 기록 세션에 대해서, 프로그램 또는 기록 세션 및 각각의 다중 프로그램에 대한 전송 세그먼트는 별개의 프로그램으로서 재구성될 수 있다.
본 원리의 또 다른 관점에 따라, 미디어 콘텐츠를 재생하기 위한 방법이 제공된다. 본 방법은 이산 파일을 세그먼트 저장 장치에 저장하는 단계를 포함한다. 각각의 이산 파일은 미디어 콘텐츠에 대응하는 전송 스트림 데이터 및 인덱스 데이터로부터 얻은 각각의 전송 세그먼트 및 각각의 인덱스 세그먼트를 포함한다. 본 방법은 전송 세그먼트의 연속 재생을 위해 이산 파일로부터 전송 세그먼트들을 재구성하는 단계를 또한 포함한다. 하나의 프로그램 또는 내부에 다중 프로그램을 포함하는 기록 세션에 대해서, 프로그램 또는 기록 세션 및 각각의 다중 프로그램에 대한 전송 세그먼트는 별개의 프로그램으로서 재구성될 수 있다.
본 원리의 상기 및 다른 관점, 기능 및 장점은 첨부된 도면과 함께 판독되는 예시적인 실시예의 다음의 상세한 설명으로부터 명백하게 될 것이다.
전송 스트림 데이터 및 인덱스 데이터를 분할하여, 하나의 프로그램 또는 내부에 다중 프로그램을 포함하는 기록 세션에 대해서, 프로그램 또는 기록 세션 및 각각의 다중 프로그램은 별개의 프로그램으로서 기록된다.
도 1은 본 원리의 실시예에 따라 본 원리가 적용될 수 있는 예시적인 처리 시스템(100)을 도시하는 도면;
도 2는 본 원리의 실시예에 따라 디지털 비디오 레코더 기능 및 타임-시프트 기능을 포함하는 예시적인 셋-톱 박스(200)를 도시하는 도면;
도 3은 본 원리의 실시예에 따라 본 원리가 적용될 수 있는 예시적인 기록 파이프라인(300)을 도시하는 도면;
도 4는 본 원리의 실시예에 따라 본 원리가 적용될 수 있는 예시적인 재생 파이프라인(300)을 도시하는 도면;
도 5는 본 원리의 실시예에 따라 세그먼트 데이터베이스에 존재하는 4개의 예시적인 기록 유형(500)을 도시한 도면;
도 6은 본 원리의 실시예에 따라 기록을 시작하기 위한 예시적인 방법(600)을 도시하는 도면;
도 7은 본 원리의 실시예에 따라 기록을 정지하기 위한 예시적인 방법(700)을 도시하는 도면;
도 8은 본 원리의 실시예에 따라 기록을 삭제하기 위한 예시적인 방법(800)을 도시하는 도면;
도 9는 본 원리의 실시예에 따라 세그먼트를 가비지(garbage) 수집하기 위한 예시적인 방법(900)을 도시하는 도면;.
도 10은 본 원리의 실시예에 따라 기록의 시작에서 데이터를 절단하기 위한 예시적인 방법(1000)을 도시하는 도면;
도 11은 본 원리의 실시예에 따라 기록의 시작에 세그먼트를 첨부하기 위한 예시적인 방법(1100)을 도시하는 도면;
도 12는 본 원리의 실시예에 따라 기록을 재생하기 위한 예시적인 방법(1200)을 도시하는 도면; 및
도 13은 본 원리의 실시예에 따라 예시적인 기록 트리 인덱스(1300)를 도시하는 도면.
본 원리는 다음 예시적인 도면에 따라 더욱 양호하게 이해될 것이다.
본 원리는 서브-기록을 생성 및 관리하는 것에 관한 것이다.
본 기술에 숙련된 사람은 본 원리가 적용될 수 있는 여러 응용을 용이하게 생각할 수 있지만, 다음 설명은 디지털 비디오 레코더 기능 및 타임-시프트 기능을 셋-톱 박스에 적용한 본 원리의 실시예에 초점이 맞춰질 것이다. 그러나, 본 기술에 숙련된 사람은, 본 명세서에 제공된 본 원리의 가르침에 따라, 본 원리의 정신을 유지하면서, 본 원리가 적용될 수 있는 다른 장치 및 응용들을 용이하게 생각할 것이다. 예를 들어, 본 원리는 기록 및 타임-시프트 기능과 함께 멀티미디어 재생 능력을 갖는 임의의 장치에 병합될 수 있다. 이에 따라, 본 원리는 디지털 비디오 레코더(DVR) 능력, 독립형 DVR, 홈 미디어 서버, 컴퓨터 미디어 스테이션, 태블릿 장치, 홈 네트워크 게이트웨이, 멀티-미디어 플레이어, 홈 네트워킹 장치 등을 셋-톱 박스에 병합시킬 수 있다. 장치에 대한 이전의 기재가 단지 예시적이며 배타적이 아니라는 것을 이해해야 한다.
상술한 종래 기술과, 타임-시프트 기록의 끝에서 이전 데이터를 절단하면서, 새로운 데이터를 타임-시프트 기록에 부가하는 문제를 다루기 위해 특별히 설계된 파일 시스템의 이용에 관련하여, 우리는 본 원리가 특별히 설계된 파일 시스템을 필요로 하지 않고 문제를 해결한다는 것을 초기에 지적한다. 유리하게, 이는 표준 파일 시스템(또한, 본 명세서에는 "존재하는" 또는 "레거시" 파일 시스템으로도 칭한다)이 비디오 저장을 위해 사용될 수 있다. 또한, 본 원리는 오버랩핑 기록들 사이의 전송 데이터의 공유를 허용하는데, 이는 저장 공간을 감소시킨다.
도 1은 본 원리의 실시예에 따라 본 원리가 적용될 수 있는 예시적인 처리 시스템(100)을 도시한다. 처리 시스템(100)은 시스템 버스(104)를 통해 다른 구성 요소들에 동작 가능하게 결합한 적어도 하나의 프로세서(CPU)(102)를 포함한다. 판독 전용 메모리(ROM)(106), 랜덤 액세스 메모리(RAM)(108), 디스플레이 어댑터(110), 입/출력(I/O) 어댑터(112), 사용자 인터페이스 어댑터(114), 및 네트워크 어댑터(198)는 시스템 버스(104)에 동작 가능하게 결합된다.
디스플레이 장치(116)는 디스플레이 어댑터(110)에 의해 시스템 버스(104)에 동작 가능하게 결합된다. 디스크 저장 장치(예를 들어, 자기 또는 광학 디스크 저장 장치)(118)는 I/O 어댑터(112)에 의해 시스템 버스(104)에 동작 가능하게 결합된다.
마우스(120) 및 키보드(122)는 사용자 인터페이스 어댑터(214)에 의해 시스템 버스(104)에 동작 가능하게 결합된다. 마우스(120) 및 키보드(122)는 시스템(100)에 입력 및 시스템(100)으로부터 출력하는데 사용된다.
트랜시버(196)는 네트워크 어댑터(198)에 의해 시스템 버스(104)에 동작 가능하게 결합된다.
물론, 처리 시스템(100)은 본 기술에 숙련된 사람에 의해 용이하게 고려될 수 있는 다른 요소들(도시하지 않음)을 또한 포함할 수 있을 뿐만 아니라, 특정 요소를 생략할 수도 있다. 예를 들어, 여러 다른 입력 장치 및/또는 출력 장치는, 본 기술에 숙련된 사람에 의해 쉽게 알 수 있는 것처럼, 그 장치의 특정 구현에 따라 처리 시스템(100)에 포함될 수 있다. 예를 들어, 여러 유형의 무선 및/또는 유선 입력 및/또는 출력 장치가 사용될 수 있다. 또한, 부가적인 프로세서, 제어기, 메모리 등은 본 기술에 숙련된 사람에 의해 쉽게 알 수 있는 것처럼, 다양한 구성으로 사용될 수도 있다. 처리 시스템(100)의 상기 및 다른 변경안은 본 명세서에 제공된 본 원리의 개시에 따라 본 기술에 숙련된 사람에 의해 용이하게 고려된다.
또한, 도 2에 관하여 아래에 설명된 셋-톱 박스(200)가 본 원리의 각각의 실시예를 구현하기 위한 셋-톱 박스(200)임을 인지해야 한다. 또한, 도 3 및 도 4에 관하여 아래에 설명된 기록 파이프라인(300) 및 재생 파이프라인(400)이 셋-톱 박스(200) 내에 각각 포함된다는 것을 인지해야 한다. 물론, 상기 설명한 것처럼, 본 원리는 셋-톱 박스에 제한하지 않으며, 이에 따라, 기록 파이프라인(300) 및 재생 파이프라인(400)은, 본 원리의 정신을 유지하면서, 상기에 일부가 언급된 다른 장치에 병합될 수 있다. 처리 시스템(100)의 일부 또는 전체는 셋-톱 박스(200)(또는, 다른 장치), 기록 파이프라인(300), 및/또는 재생 파이프라인(400)의 하나 이상의 요소에서 구현될 수 있다.
부가적으로, 처리 시스템(100)이 본 명세서에 기재된 방법의 적어도 일부, 예를 들어, 도 6의 방법(600)의 적어도 일부 및/또는, 도 7의 방법(700)의 적어도 일부를 포함하는 적어도 일부를 실행할 수 있다는 것을 인지해야 한다. 유사하게, 셋-톱 박스(200), 기록 파이프라인(300), 및/또는 재생 파이프라인(400)의 일부 또는 전체는 방법(600)의 적어도 일부 및/또는 방법(700)의 적어도 일부를 실행하는데 사용될 수 있다.
도 2는 본 원리의 실시예에 따라 디지털 비디오 레코더 기능 및 타임-시프트 기능을 포함하는 예시적인 셋-톱 박스(200)를 도시한다. 도시되지 않은 구성 요소들이 본 기술에 숙련된 사람들에 이미 알려져 있기 때문에, 간결함의 관점에서 셋-톱 박스(200)의 완벽한 동작에 필요한 여러 구성 요소가 도시되어 있지 않음을 인지해야 한다.
신호들은 입력 신호 수신기(202)에서 셋-톱 박스(200)에 인터페이스된다. 입력 신호 수신기(202)는 입력 스트림 프로세서(204)에 접속한다. 입력 스트림 프로세서(204)는 오디오 프로세서(206) 및 비디오 프로세서(210)에 접속한다. 오디오 프로세서(206)는 셋-톱 박스(200)로부터 오디오 출력 신호를 제공하는 오디오 인터페이스(208)에 접속한다. 비디오 프로세서(210)는 셋-톱 박스(200)로부터 비디오 출력 신호를 제공하는 디스플레이 인터페이스(218)에 접속한다. 오디오 프로세서(206) 및 비디오 프로세서(210)는 또한 저장 장치(212)에 접속한다. 제어기(214)는, 저장 장치(212) 뿐만 아니라, 입력 스트림 프로세서(204), 오디오 프로세서(206), 및 비디오 프로세서(210)에 접속한다. 제어 메모리(220)는 제어기(214)에 접속한다. 제어기(214)는 또한 사용자 인터페이스(216) 및 핸드헬드 인터페이스(222)에 접속한다.
콘텐츠는 입력 신호 수신기(202)에 수신된다. 입력 신호 수신기(202)는 공중파, 케이블, 위성, 이더넷, 광섬유 및 전화 라인 네트워크를 포함하는 여러 가능한 네트워크 중 하나를 통해 제공되는 신호를 수신, 복조 및 디코딩하기 위해 사용되는 하나 이상의 여러 공지된 수신기 회로가 될 수 있다. 입력 신호 수신기(202)가 원하는 방송 입력 신호와 동일한 전달 네트워크를 통해, 또는 다른 네트워크, 및/또는 대안의 셀룰러 또는 무선 네트워크를 통해 전달되는 데이터 신호 뿐만 아니라 미디어 콘텐츠 신호에 대한 수신, 복조 및 디코딩 회로를 포함할 수 있다는 것을 주목하는 것은 중요하다. 전달 네트워크 2(또는 무선 네트워크)를 통해 수신된 미디어 콘텐츠 및 데이터는 미디어 콘텐츠 및 전달 네트워크 1과는 다를 수 있다. 데이터는 스케줄링 변경 및 갱신과 연관된 정보 뿐만 아니라 전달 네트워크를 통해 전달된 미디어 콘텐츠에 관련된 정보를 포함할 수 있다. 한 실시예에 있어서, 케이블 방송 신호는 신호 수신기(202)의 케이블 튜너 회로에서 수신, 복조 및 디코딩된다. 원하는 방송 입력 신호는 제어 인터페이스(도시하지 않음)를 통해 제공되는 사용자 입력에 기초하여 입력 신호 수신기(202)에서 선택 및 검색될 수 있다. 입력 신호 수신기(202)는 양방향 네트워크 연결을 추가적으로 제공하는 인터넷 프로토콜(IP) 인터페이스 회로를 또한 포함한다.
입력 신호 수신기(202)의 하나 이상의 회로로부터 디코딩된 출력 신호는 입력 스트림 프로세서(204)에 제공된다. 입력 스트림 프로세서(204)는 최종 신호 선택 및 처리를 수행하고, 콘텐츠 스트림에 대한 오디오 콘텐츠로부터 비디오 콘텐츠의 분리를 포함한다. 오디오 콘텐츠는 수신된 포맷(예를 들어, 압축된 디지털 신호)에서 다른 포맷(예를 들어, 아날로그 파형 신호)로 변환을 위해 오디오 프로세서(206)에 제공된다. 아날로그 파형 신호는 오디오 인터페이스(208)에 제공되고, 디스플레이 장치(114) 또는 오디오 증폭기(도시하지 않음)에도 제공된다. 대안으로, 오디오 인터페이스(208)는 고선명도 멀티미디어 인터페이스(HDMI) 케이블 또는 소니/필립스 디지털 상호 접속 포맷(SPDIF)을 통해 대안의 오디오 인터페이스를 사용하여 오디오 출력 장치 또는 디스플레이 장치에 디지털 신호를 제공할 수 있다. 오디오 프로세서(206)는 오디오 신호의 저장을 위해 임의의 필요한 변환을 또한 실행한다.
입력 스트림 프로세서(204)로부터의 비디오 출력은 비디오 프로세서(210)에 제공된다. 비디오 신호는 여러 포맷 중 하나가 될 수 있다. 비디오 프로세서(210)는 입력 신호 포맷에 기초하여, 비디오 콘텐츠의 변환을 필요에 따라 제공한다. 비디오 프로세서(210)는 비디오 신호의 저장을 위한 임의의 필수적인 변환을 또한 수행한다.
저장 장치(212)는 입력에서 수신된 오디오 및 비디오 콘텐츠를 저장한다. 저장 장치(212)는 제어기(214)의 제어하에, 그리고, 또한 명령, 예를 들어 사용자 인터페이스(216)로부터 수신된 빨리 감기(FF) 및 되감기(Rew)와 같은 네비게이션 명령에 기초하여, 콘텐츠의 나중의 검색 및 재생을 허용한다. 저장 장치(212)는 하드디스크 드라이브, 정적 RAM(SRAM) 또는 동적 RAM(DRAM)와 같은 하나 이상의 대용량 집적 전자 메모리, 소형 디스크 드라이브 또는 디지털 비디오 디스크 드라이버와 같은 상호 교환 가능한 광학 디스크 저장 시스템, 또는 셋-톱 박스(200)의 외부에 있거나 그에 액세스 가능한 저장 장치가 될 수 있다.
입력으로부터 또는 저장 장치(212)로부터 시작하는 비디오 프로세서(210)로부터의 변환된 비디오 신호는 디스플레이 인터페이스(218)에 제공된다. 디스플레이 인터페이스(218)는 디스플레이 신호를 상술한 형태의 디스플레이 장치에 또한 제공한다. 디스플레이 인터페이스(218)는 적색-녹색-청색(RGB)과 같은 아날로그 신호 인터페이스가 될 수 있거나, 디지털 인터페이스(예를 들어, HDMI)가 될 수 있다.
제어기(214)는 입력 스트림 프로세서(202), 오디오 프로세서(206), 비디오 프로세서(210), 저장 장치(212), 사용자 인터페이스(216), 및 핸드헬드 인터페이스(222)를 포함하는 셋-톱 박스(200)의 여러 구성 요소들에 버스를 통해 상호 접속된다. 제어기(214)는 입력 스트림 신호를 저장 장치에 저장을 위해 또는 디스플레이를 위한 신호로 변환하기 위한 변환 처리를 관리한다. 제어기(214)는 저장된 콘텐츠의 검색 및 재생을 또한 관리한다. 제어기(214)는 제어기(214)를 위한 정보 및 명령 코드를 저장하기 위한 제어 메모리(220)(예를 들어, RAM, SRAM, DRAM, 판독 전용 메모리(ROM), 프로그램 가능한 ROM, 전자적으로 프로그램 가능한 ROM(EPROM), 전자적으로 소거 가능하고 프로그램 가능한 ROM(EEPROM), 플래시 메모리 등을 포함하는 휘발성 또는 비-휘발성 메모리)에 또한 결합된다. 또한, 메모리(220)의 구현은 단일 메모리 장치 또는, 대안으로, 공유 또는 공통 메모리를 형성하기 위해 함께 접속된 하나 이상의 메모리 회로와 같은 여러 가능한 실시예를 포함할 수 있다. 또한, 메모리에는 보다 큰 회로의 버스 통신 회로 부분들과 같은 다른 회로가 포함될 수 있다.
사용자 인터페이스 요소 및 디스플레이 장치에 대한 인터페이싱과 함께, 셋-톱 박스(200)는 핸드헬드 인터페이스(222)를 통해 태블릿과 같은 핸드헬드 장치에 또한 인터페이스할 수 있다. 이 핸드헬드 장치는 추가적인 제어를 갖는 디스플레이 스크린을 포함할 수 있거나, 터치 스크린을 포함할 수 있다. 비디오 프로세서(210)로부터의 비디오 신호 뿐만 아니라 온-스크린 디스플레이 메시지 및 프롬프트 복귀 메시지와 같은 다른 데이터는 제어기(214)와 핸드헬드 인터페이스(222) 사이에서 루팅될 수 있다. 핸드헬드 인터페이스(222)는 Wi-Fi, 블루투스, 또는 전기 및 전자 엔지니어 연구소(IEEE) 표준 802.11와 같은 무선 주파수 통신 링크를 사용하여 핸드헬드 장치 또는 태블릿과 신호 및 데이터를 송수신할 수 있다. 핸드헬드 인터페이스(222)는 대안으로 적외선 인터페이스를 사용하여 핸드헬드 장치 또는 태블릿과 신호 및 데이터를 송수신할 수 있다.
동작에 있어서, 셋-톱 박스(200)는 아래에 보다 더 상세하게 설명하는 것처럼 셋-톱 박스 또는 홈 게이트웨이와 같은 클라이언트 장치의 미디어 콘텐츠 데이터베이스를 갱신, 관리 및 검색을 위한 처리를 구현한다. 알고리즘 또는 기능의 물리적인 구현은 비디오 프로세서(210)에 관련된 별개의 회로와 같은 하드웨어로 실행될 수 있거나, 제어 메모리(220)에 상주하고 제어기(214)에 의해 판독 및 실행되는 소프트웨어와 같은 소프트웨어로 실행될 수 있다. 본 방법은 미디어 콘텐츠와 연관된 이벤트 데이터를 수신하는 단계로서, 이벤트 데이터는 유일한 이벤트 식별자를 포함하는, 수신하는 단계와, 이벤트 데이터를 캐시 메모리 내의 어레이에 저장하기 위해 이벤트 식별자를 조사하는 단계와, 수신된 이벤트 데이터의 이벤트 식별자가 현재 어레이에 존재하지 않는 경우 이벤트 카운트 값을 갱신하는 단계와, 이벤트 카운트 값의 적어도 하나가 미리 결정된 임계값을 초과하고, 시간 기간 값이 미리 결정된 임계값을 초과할 때처럼, 캐시 메모리의 스왑이 트리거되는 경우, 어레이의 이벤트 데이터로 제 1 이벤트 데이터베이스를 갱신하는 단계를 포함한다.
미디어 저장 및 인터페이스 장치로서 사용되는 셋-톱 박스(200)와 같은 장치의 동작 관점은 미디어 콘텐츠의 저장, 관리, 검색, 탐색 뿐만 아니라, 콘텐츠를 식별하기 위한 데이터베이스 엔트리 또는 기록을 전형적으로 포함한다. 데이터베이스 정보 및 엔트리를 갱신하는 단계는 주기적 또는 연속적인 콘텐츠 정보 갱신을 포함할 수 있는 다이나믹 시스템에서 중요하다. 예를 들어, 새로운 데이터베이스 기록 및 정보는 수신되어 데이터베이스에 제공될 수 있다. 부가적으로, 현재 저장된 콘텐츠 및 엔트리 또는 콘텐츠에 관련된 정보는 제거 또는 소거될 수 있다. 콘텐츠는 주기적으로, 또는 대안으로, 사용자 제어로부터 장치로의 입력을 통해 제거 또는 소거될 수 있다. 동시에, 또는 거의 동시에, 데이터베이스 검색 요청과 같은 요청이 구성될 수 있다. 일반적으로, 콘텐츠 및 정보의 모든 소트(sorts) 및 형태는 다중 소스로부터 수신되어 데이터베이스에 입력될 수 있다. 안정된 데이터베이스가 검색 요청을 위해 사용될 수 있는 것이 중요하다. 데이터 및 정보는, 검색 능력을 계속 유지하고 검색 결과 및 검색의 성능을 가능한 높게 유지하면서, 데이터베이스에 추가되는 것이 필요하다. 데이터베이스에서 갱신 및 검색의 개선은 심지어 단순한 데이터베이스 구조(예를 들어, 구조화 질의 언어(SQL) 데이터베이스에서 구현되는 구조)로 더욱 바람직할 수 있다.
본 명세서에 설명된 것과 같은 미디어 콘텐츠 데이터베이스의 갱신, 관리 및 검색을 위한 기능 및 제어는 연산 코드의 일부 또는 게이트웨이 장치(예를 들어, 셋-톱 박스(200))와 연관된 펌웨어로서 포함될 수 있다. 이러한 처리는 임의의 프로그래밍 언어(예를 들어, 자바 또는 하이퍼텍스트 마크업 언어(HTML))로 기재된 연산 명령을 포함할 수 있다. 애플리케이션은 미리 로드될 수 있거나 다운로드(예를 들어, 서버 또는 인터넷 사이트로부터)될 수 있고, 호스트 장치의 메모리에 저장될 수 있다. 한 실시예에 있어서, 명령이 검색되고 제어기(214)에 의해 실행되는 도 2의 제어 메모리(220)에 저장된다는 점을 인식해야 한다. 다른 실시예에 있어서, 메모리 및 처리를 실행하기 위해 대응하는 프로세서 또는 제어기는 분리된 독립형 집적 회로(예를 들어, 디지털 처리 프로세서(DSP) 또는 애플리케이션 주문형 집적 회로(ASIC))에 집적될 수 있다.
도 3은 본 원리의 실시예에 따라 본 원리가 적용될 수 있는 예시적인 기록 파이프라인(300)을 도시한다. 한 실시예에 있어서, 기록 파이프라인(300)은 도 2의 셋-톱 박스(200)에 포함된다. 그러나, 상기 설명한 것처럼, 기록 파이프라인(300)은 독립형 DVR, 홈 미디어 서버, 컴퓨터 미디어 스테이션, 태블릿 장치, 홈 네트워크 게이트웨이, 멀티-미디어 플레이어, 홈 네트워킹 장치 등을 포함하는 다른 장치에 포함될 수 있지만, 이에 제한되지 않는다.
기록 파이프라인(300)은 튜너(301), 디멀티플렉서(demux)(302), 분할기(303), 세그먼트 저장 장치(304), 세그먼트 데이터베이스(305), 및 기록 제어 장치(306)를 포함한다.
방송 비디오는 튜너(301)에 의해 수신된다. 튜너(301)는 디지털 비디오 방송(DVB) 또는 고급형 텔레비전 시스템 위원회(ATSC) 튜너, 또는 네트워크 인터페이스를 통해 전송 스트림을 수신하는 인터넷 프로토콜 텔레비전(IPTV) 튜너와 같은 하드웨어 튜너가 될 수 있다(도시하지 않음). 튜너(301)에 의해 전송 스트림은 디멀티플렉서(302)에 전송된다.
멀티-프로그램 전송 스트림의 경우에, 디멀티플렉서(302)는 원하는 프로그램을 선택하여 인덱싱 정보와 함께 단일 프로그램 전송 스트림을 분할기(303)에 전송할 수 있다. 단일 프로그램 전송 스트림의 경우에 있어서, 디멀티플렉서(302)는 수신된 전송 스트림을 변경 없이 분할기(303)에 투명하게 전송할 수 있지만, 연관된 스트림을 위해 인덱싱 정보를 추가적으로 제공할 수 있다. 이 두 경우에 있어서, 인덱싱 정보는 스트림의 액세스 포인트의 리스트 및 이에 연관된 프리젠테이션 시간 스탬프(PTS)를 포함한다. 액세스 포인트는 디코딩이 시작될 수 있는 스트림의 위치를 표시한다.
분할기(303)는 전송 스트림 데이터 및 인덱싱 데이터를 별개의 세그먼트로 분리하고, 이 데이터를 세그먼트 저장 장치(304)에 기입한다. 세그먼트 저장 장치(304)는 전형적으로 파일 시스템을 갖는 하드디스크가 될 수 있다. 물론, 세그먼트 저장 장치(304)는, 본 명세서에 제공된 본 원리의 가르침에 따라, 본 기술에 숙련된 사람에 의해 쉽게 인식될 수 있는 것처럼, 파일 시스템을 갖는 상이한 형태의 메모리 장치로 구현될 수 있다.
각각의 전송 세그먼트 및 인덱스 세그먼트는 파일 시스템의 유일한 파일로서 저장된다. 세그먼트의 사이즈는 주문형 시스템의 성능 고려에 기초하여 조정될 수 있지만, 전형적인 세그먼트 사이즈는 약 1 내지 5 분의 데이터를 포함할 것이다. 각각의 세그먼트가 기입될 때, 분할기(303)는 생성하는 세그먼트에 관한 정보를 갖는 세그먼트 데이터베이스(305)를 갱신한다.
기록 제어 장치(306)는 기록을 제어하기 위해 튜너(301), 디멀티플렉서(302), 및 분할기(303)와 상호 작용한다. 기록 제어 장치(306)는 튜너(301)를 제어 및/또는, 그렇지 않으면, 기록될 서비스를 동조하도록 튜너(301)에 지시한다. 기록 제어 장치(306)는 디멀티플렉서(302)를 제어 및/또는, 그렇지 않으면, 전송 스트림에서 어느 프로그램이 기록하도록 디멀티플렉서(302)에 지시하며, 이는 분할기(303)에 기록된 세그먼트와 연관되도록 플레이리스트의 리스트를 제공한다.
도 4는 본 원리의 실시예에 따라 본 원리가 적용될 수 있는 예시적인 재생 파이프라인(300)을 도시한다. 재생 파이프라인(400)은 기록된 세그먼트를 재생한다. 한 실시예 있어서, 재생 파이프라인(400)은 도 2의 셋-톱 박스(200)에 포함된다. 그러나, 상기 설명한 것처럼, 재생 파이프라인(400)은 독립형 DVR, 홈 미디어 서버, 컴퓨터 미디어 스테이션, 태블릿 장치, 홈 네트워크 게이트웨이, 멀티-미디어 플레이어, 홈 네트워킹 장치 등을 포함하는 다른 장치에 포함될 수 있지만, 이에 제한하지 않는다.
재생 파이프라인(400)은 세그먼트 데이터베이스(401), 세그먼트 저장 장치(402), 역분할기(403), 디멀티플렉서(404), 재생 제어 장치(405), 서브타이틀 디코더(406), 비디오 디코더(407), 오디오 디코더(408), 오디오 렌더링 장치(209), 및 비디오 렌더링 장치(210)를 포함한다.
재생 제어 장치(405)는 역분할기(403)를 제어 및/또는, 그렇지 않으면, 어느 플레이리스트가 재생되어야하는지를 역분할기(403)에 지시한다. 재생 제어 장치(405)는 또한 역분할기(403)를 제어 및/또는, 그렇지 않으면, 지정된 시간 오프셋으로 재생을 시작하고 지정된 속도로 재생하도록 역분할기(403)에 지시한다. 예를 들어, 1.0의 재생 속도는 정상 재생에 대응하고, 4.0은 4x 빨리 감기에 대응하고, -4.0는 4x 되감기에 대응하며, 0.0은 일시 정지에 대응한다.
역분할기(403)는 재생에 필요한 전송 및 인덱스 세그먼트 파일을 찾기 위해 세그먼트 데이터베이스(401)에 질의한다. 그 다음, 역분할기(403)는 이들 파일을 세그먼트 저장 장치(402)로부터 판독한다. 인덱싱 정보는 재생이 일부 시간 오프셋에서 세그먼트로 시작되어야 하는 경우에 세그먼트에서 정의된 오프셋으로 스킵하도록 역분할기(403)에 의해 사용된다. 그 다음에, 역분할기(403)는 세그먼트 저장 장치(402)로부터 데이터(예를 들어, 전송 스트림)를 디멀티플렉서(404)로 전송한다.
디멀티플렉서(404)는 전송 스트림을 오디오, 비디오, 및 서브타이틀 요소 스트림으로 분할하고, 이들 스트림을 오디오 디코더(408), 비디오 디코더(407), 및 서브타이틀 디코더(406)로 각각 전송한다. 오디오 디코더(408)로부터의 출력은 오디오의 최종 렌더링을 실행하는 오디오 렌더링 장치(409)에 전송된다. 비디오 디코더(407) 및 서브타이틀 디코더(406)로부터의 출력은 비디오의 최종 렌더링을 실행하는 비디오 렌더링 장치(410)에 전송된다.
도 5는 본 원리의 실시예에 따라 세그먼트 데이터베이스(예를 들어, 세그먼트 데이터베이스(305) 및 세그먼트 데이터베이스(401))에 존재하는 4개의 예시적인 기록 유형(500)을 도시한다. 기록 유형은 다음: Playlist 기록(501) ; PlaylistSegment 기록(502); Segment 기록(503); 및 SegmentDelete 기록(504)을 포함한다. 각각의 Playlist 기록(501)은 기록을 나타낸다. 각각의 세그먼트 기록(403)은 디스크 상에 저장된 기록된 세그먼트를 나타낸다. 각각의 PlaylistSegment 기록(402)은 Segment 기록(503)을 Playlist 기록(501)과 연관시킨다. 최종적으로, SegmentDelete 기록(504)은 삭제를 위해 표시된 기록된 세그먼트를 추적하는데 사용된다.
지금, 본 원리의 실시예에 따라, 본 원리가 적용될 수 있는 일부 예시적인 시나리오에 관해 설명할 것이다.
사용자가 라이브 방송 콘텐츠를 시청하고 기록을 시작할 것을 결정한다면, 심지어 사용자가 이벤트의 시작 이후에 약간 동안 기록 요청을 하지 않은 경우에도, 이벤트의 완벽한 기록을 생성하기 위해 이용 가능한 타임-시프트 데이터를 이용하는 것이 바람직하다. 한 예로서, 사용자가 8:00pm에 시작하는 이벤트를 시청한다고 가정한다. 8:10pm에서, 사용자는 이벤트를 기록하도록 요청한다. 타임-시프트 버퍼가 8:00pm에서 8:10pm까지 콘텐츠를 포함한다면, 전체 이벤트의 완전한 기록을 생성할 수 있어야 한다. 본 발명은 새로운 기록을 형성하기 위해 타임-시프트 데이터의 카피를 요구하지 않고 타임-시프트 데이터를 기록으로 변환하기 위한 수단을 제공한다.
일부 예에 있어서, 다중 기록이 동일한 콘텐츠의 일부를 공유할 수 있다. 예를 들어, 동일 채널에서, 이벤트 A는 8:00PM에서 시작하여 8:30PM에 종료하고, 이벤트 B는 8:30PM에서 시작하여 9:00PM에 종료한다고 가정한다. 사용자는 이벤트 A 및 이벤트 B 모두를 기록하도록 요청할 수 있다. 또한, 사용자의 기록 선호도(preference)는 모든 기록이 5분 일찍 시작하여 5분 늦게 종료해야 한다는 것을 나타낼 수 있다. 이러한 시나리오에 있어서, 기록 A의 마지막 10분이 기록 B의 처음 10과 동일한 콘텐츠를 포함하게 되는 오버랩이 존재한다. 본 원리는 하나의 위치에 저장되고 공유된 데이터를 복사하는 대신에 두 개의 기록에 의해 공유되는 기록의 오버랩핑 부분을 허용함으로써 그와 같은 오버랩핑 기록의 저장을 최적화하는 방식을 제공한다.
대부분의 DVR에서, 사용자는 기록하기 위해 특정 이벤트를 선택하거나, 시간 범위 및 채널에 기초하여 기록을 예약할 수 있다. 사용자가 시간 및 채널에 의해 예약할 때, 대부분의 DVR은 "채널 99 상에 수동 기록 8pm - 10pm"와 같은 무엇인가를 말하는 일반적인 항목으로서 기록을 표시하게 될 것이다. 이러한 기록은 다중 이벤트를 포함할 수 있지만, 어떠한 기록이 포함하는지를 알 수 있는 방법이 없다. 또한, 특정 이벤트를 선택하여 이를 재생하거나 기록에서 이벤트를 유지하여 나머지를 삭제하는 방법은 없다. 예를 들어, 상기 언급한 수동 기록은 사용자가 8:30pm에서 9pm까지 유지하기를 원하는 프로그램 A의 에피소드를 포함할 수 있지만, 사용자는 다른 모든 것을 삭제하기를 원하는 경우도 있을 수 있다. 본 원리는 이러한 문제에 대한 해결책을 제공한다.
본 원리의 실시예에 따라, 기록을 생성하는 것에 대한 설명을 한다.
기록이 시작될 때, 우선 새로운 플레이리스트 기록(501)은 새로운 기록을 나타내는 세그먼트 데이터베이스에 추가된다. 이러한 플레이리스트 기록에는 새로운 유일한 PlaylistID가 할당되고, UsedForTimeshift 필드는 그 플레이리스트가 정상 기록에 대한 것인지 또는 타임-시프트에 대한 것인지를 나타내도록 설정된다.
플레이리스트가 생성된 이후에, 기록 제어는 기록을 시작하도록 기록 파이프라인(300)을 구성한다. 이때, 분할기(303)는 세그먼트 데이터베이스(305)에 새로운 Segment 기록(503) 및 PlaylistSegment 기록(502)을 생성하고, 제 1 전송 파일 및 인덱스 파일을 디스크에 기입하기 시작한다.
Segment 기록(503)은 다음 값으로 생성된다.
SegmentID - 세그먼트에 대한 유일한 ID
TransportFile - 세그먼트에 대한 전송 스트림 데이터를 저장하는데 사용되는 파일
IndexFile - 세그먼트에 대한 인덱스 정보를 저장하는데 사용되는 파일
ReferenceCount - 이는 세그먼트를 참조하는 PlaylistSegment 기록의 수의 카운트이다. 현재의 기록이 하나의 플레이리스트에만 적용한다면, 이는 1로 설정될 것이다.
Service/ProgramID - 이는 기록되는 서비스(채널)를 식별한다.
StartTime - UTC에서 세그먼트의 시작 시간.
EndTime - 이는 세그먼트의 종료 시간이지만, 세그먼트가 완료되기까지 알 수 없다. 초기에, 이 값은 0으로 설정된다.
StartingPTS - 이는 세그먼트에서 제 1 PTS이다. 제 1 PTS가 세그먼트 생성에서 알지 못한 경우, 이 값은 0으로 초기에 설정된다.
EndingPTS - 이는 세그먼트에 대해서 종료 PTS 값이지만, 초기에 알 수 없으며, 0으로 설정된다.
Discontinuity - 이는 세그먼트 내에 존재하는 PTS 불연속을 나타내는 플래그이다. 이는 초기에 FALSE로 설정된다.
PlaylistSegment 기록(502)은 다음 값으로 생성된다.
PlaylistID - 세그먼트와 연관된 Playlist 기록에 대한 PlaylistID
SegmentID - 세그먼트 기록의 세그먼트ID
SequenceNumber - 이는 플레이리스트에 부가된 각각의 세그먼트에 대한 증가하는 정수이다. 초기값은 0이다.
StartOffset - 이는 초기에 0으로 설정된다.
EndOffset - 이는 초기에 0으로 설정된다.
기록할 때, PlaylistSegment 기록(502)은 각각의 세그먼트에 대한 각각의 플레이리스트에 대해 생성된다. 따라서, 데이터가 3개의 플레이리스트로 기록되었다면, 각각의 세그먼트 기록은 3 PlaylistSegment 기록(502)을 가질 것이다. 또한, 각각의 세그먼트 기록은 세그먼트를 참조하는 3 PlaylistSegment 기록(502)이 존재하기 때문에, 3으로 설정된 참조 카운트를 갖는다.
전형적인 세그먼트 사이즈는 데이터의 약 1 분 내지 5분을 포함할 것이다. 각각의 세그먼트가 완료된 이후에, 분할기(303)는 세그먼트에 대한 최종 데이터로 Segment 기록(503)을 갱신한다. 이는, 기록의 시작에서 알지 못한 경우에, EndTime, EndingPTS, Discontinuity 플래그, 및 StartingPTS을 포함할 것이다. 이때, 분할기(303)는 다음 세그먼트를 기입하고, 새로운 Segment 기록(503) 및 PlaylistSegment 기록(502)의 생성을 시작한다. 이러한 처리는 기록이 완료될 때까지 계속된다.
도 6은 본 원리의 실시예에 따라 기록을 시작하기 위한 예시적인 방법(600)을 도시한다. 단계(610)에서, 플레이리스트가 생성된다. 단계(620)에서, 원하는 서비스에 대한 기록 파이프라인이 미리 존재하는지의 여부를 결정한다. 만일, 그렇다면, 방법(600)은 단계(615)로 진행한다. 그렇지 않으면, 방법(600)은 단계(660)로 진행한다. 단계(615)에서, 플레이리스트는 현존하는 기록 파이프라인의 분할기(303)에 부가된다.
단계(620)에서, 분할기(303)가 세그먼트의 중간에 있는지의 여부를 결정한다. 만일, 그렇다면, 방법(600)은 단계(625)로 진행한다. 그렇지 않으면, 방법(600)은 단계(645)로 진행한다.
단계(625)에서, 분할기(303)는 현재 위치에 대해 조정된 시작 오프셋으로 새로운 플레이리스트에 대한 PlaylistSegment 기록(502)을 작성한다.
단계(630)에서, 세그먼트에 참조 카운트가 증가된다.
단계(635)에서, 세그먼트가 완료되었는지의 여부를 결정한다. 만일, 그렇다면, 방법(600)은 단계(640)로 진행한다. 그렇지 않으면, 방법(600)은 단계(650)로 진행한다.
단계(640)에서, Segment 기록(503)은 최종 타임스탬프로 갱신된다.
단계(645)에서, 분할기(303)는 새로운 세그먼트 및 인덱스 파일(새로운 세그먼트에 대해)을 기재하고, Segment 기록(503)을 생성하며, 각각의 플레이리스트에 대한 PlaylistSegment 기록(502)을 생성한다.
단계(660)에서, 기록 파이프라인이 생성된다.
단계(650)에서, 기록이 완료되었는지의 여부가 결정된다. 만일, 그렇다면, 방법(600)은 단계(655)로 진행한다. 그렇지 않으면, 방법(600)은 단계(635)로 복귀한다.
단계(655)에서, 기록이 정지된다(도 7 참조).
도 7은 본 원리의 실시예에 따라 기록을 정지하기 위한 예시적인 방법(700)을 도시한다. 단계(705)에서, 플레이리스트는 분할기(303)로부터 제거된다. 단계(710)에서, 분할기(303)가 세그먼트의 중간에 있는지의 여부를 결정한다. 만일, 그렇다면, 방법(700)은 단계(715)로 진행한다. 그렇지 않으면, 방법(700)은 단계(720)로 진행한다.
단계(715)에서, 최종 PlaylistSegment 기록(502)에 종료 오프셋이 조정된다.
단계(720)에서, 세그먼트가 하나 이상의 플레이리스트를 포함하는지의 여부를 결정한다. 만일, 그렇다면, 방법(700)은 종료한다. 그렇지 않으면, 방법(700)은 단계(725)로 진행한다.
단계(725)에서, 기록 파이프라인은 해체된다.
도 8은 본 원리의 실시예에 따라 기록을 삭제하기 위한 예시적인 방법(800)을 도시한다. 단계(805)에서, PlaylistSegment 기록(502)은 질의되는데, 여기서, PlaylistID = 세그먼트의 리스트를 설계하기 위해 삭제되는 플레이리스트가 된다. 단계(810)에서, 방법(800)은 리스트에서 제 1 세그먼트로 시작한다. 단계(815)에서, Segment 기록(503)에 참조 카운트가 감소된다. 단계(820)에서, 참조 카운트 = 0인지의 여부가 결정된다. 만일, 그렇다면, 방법(800)은 단계(825)로 진행한다. 그렇지 않으면, 방법(800)은 단계(840)로 진행한다.
단계(825)에서, SegmentDelete 기록(504)은 SegmentlD로 생성된다.
단계(830)에서, 많은 세그먼트가 존재하는지의 여부를 결정한다. 만일, 그렇다면, 방법(800)은 단계(835)로 진행한다. 그렇지 않으면, 방법(800)은 단계(845)로 진행한다.
단계(835)에서, 방법(800)은 리스트에서 다음 세그먼트로 이동한다.
단계(845)에서, 가비지 수집(garbage collection)은 트리거된다.
도 9는 본 원리의 실시예에 따라 세그먼트를 가비지 수집하기 위한 예시적인 방법(900)을 도시한다. 단계(905)에서, SegmentDelete 기록(504)이 존재하는지의 여부가 결정된다. 만일, 그렇다면, 방법(900)은 단계(910)로 진행한다. 그렇지 않으면, 방법(900)이 종료된다. 단계(910)에서 전송 및 인덱스 파일이 삭제된다. 단계(915)에서, Segment 기록(503)이 삭제된다. 단계(920)에서, SegmentDelete 기록(504)이 삭제된다.
도 10은 본 원리의 실시예에 따라 기록의 시작에서 데이터를 절단하기 위한 예시적인 방법(1000)을 도시한다. 단계(1005)에서, 최소 Segment 기록(503)으로 PlaylistSegment 기록(502)이 질의되며, 여기서, PlaylistID = 세그먼트 기록을 얻도록 절단되는 플레이리스트가 된다. 단계(1010)에서, 현재 시간 - EndTime ≥ 타임-시프트 길이인지의 여부를 결정한다. 만일, 그렇다면, 방법(1000)은 단계(1015)로 진행한다. 그렇지 않으면, 방법은 단계(1040)로 진행한다.
단계(1015)에서, Segment 기록(503)에 참조 카운트가 감소된다. 단계(1020)에서, 참조 카운트 = 0인지의 여부가 결정된다. 만일, 그렇다면, 방법(1000)은 단계(1025)로 진행한다. 그렇지 않으면, 방법(1000)은 단계(1035)로 진행한다.
단계(1025)에서, SegmentDelete 기록(504)은 SegmentID로 생성된다. 단계(1030)에서, 가비지 수집은 트리거된다.
단계(1035)에서, Segment 기록(503)은 삭제된다.
단계(1040)에서, 지연 = 타임-시프트 길이 - (현재 시간- EndTime)이 된다.
도 11은 본 원리의 실시예에 따라 기록의 시작에 세그먼트를 첨부하기 위한 예시적인 방법(1100)을 도시한다. 본 방법(1100)은 기록의 시작에 타임-시프트 데이터를 미리 첨부하는데 사용될 수 있다. 단계(1105)에서, 기록이 시작된다(도 6 참조). 단계(1110)에서, Segment 기록(503)이 질의되는데, 여기서, 서비스 = 기록하고 있는 서비스이고, StartTime ≤ 원하는 StartTime이며, EndTime > 내림 차순으로 분류된 원하는 StartTime이 된다. 단계(1115)에서, 세그먼트에서 시간 갭이 존재하는지의 여부가 결정된다. 만일, 그렇다면, 방법(1100)은 단계(1120)로 진행한다. 그렇지 않으면, 방법은 단계(1125)로 진행한다.
단계(1120)에서, 절단은 갭에서 실행되어 리스트에는 (더 이상) 갭이 존재하지 않는다.
단계(1125)에서, 방법(1100)은, SequentNumber = 0를 이용하여, 리스트에서 제 2 세그먼트에서 시작한다.
단계(1130)에서, PlaylistSegment 기록(502)이 생성되고, 참조 카운트가 증가된다. 단계(1135)에서, 리스트에 더 많은 세그먼트가 존재하는지의 여부가 결정된다. 만일, 그렇다면, 방법(1100)은 단계(1140)로 진행한다. 그렇지 않으면, 방법(1100)은 종료된다. 단계(1140)에서, 방법(1100)은 다음 세그먼트로 이동하고, SequenceNumber를 감소시킨다.
도 12는 본 원리의 실시예에 따라 기록을 재생하기 위한 예시적인 방법(1200)을 도시한다. 단계(1205)에서, 최소의 SequenceNumber로 PlaylistSegment 기록(502)은 질의되는데, 여기서, PlaylistID = 재생을 위한 플레이리스트이다. 단계(1210)에서, StartOffset = 0인지의 여부를 결정한다. 만일, 그렇다면, 방법(1200)은 단계(1215)로 진행한다. 그렇지 않으면, 방법(1200)은 단계(1250)로 진행한다.
단계(1215)에서, 시작 바이트 위치는 0으로 설정된다.
단계(1220)에서, EndOffset = 0인지의 여부를 결정한다. 만일, 그렇다면, 방법(1200)은 단계(1225)로 진행한다. 그렇지 않으면, 방법(1200)은 단계(1255)로 진행한다.
단계(1225)에서, 종료 바이트 위치는 전송 파일의 사이즈와 동일하게 설정된다.
단계(1230)에서, 전송 파일은 시작 바이트 위치에서 종료 바이트 위치까지 판독되고, 데이터는 디멀티플렉서(404)로 전송된다. 단계(1235)에서, SequenceNumber는 증가된다. 단계(1240)에서, 플레이리스트 세그먼트가 PlaylistID = 재생을 위한 Playlist 및 연속된 번호로 존재하는지의 여부가 결정된다. 만일, 그렇다면, 방법(1200)은 단계(1245)로 진행한다. 그렇지 않으면, 방법(1200)은 단계(1260)로 진행한다.
단계(1245)에서, 플레이리스트 세그먼트 및 세그먼트가 검색된다.
단계(1250)에서, 인덱스 파일은 StartOffset에 대한 시작 바이트 위치를 찾기 위해 판독된다.
단계(1255)에서, 인덱스 파일은 EndOffset에 대해서 종료 바이트 위치를 발견하기 위해 판독된다.
단계(1260)에서는 재생이 완료된다.
지금, 본 원리의 실시예에 따라, 기록 동작 동안 플레이리스트를 부가/제거하는 것에 관해 설명한다.
동일한 데이터가 다중 플레이리스트에 대해 사용되는 경우에, 기록 동작 중에 분할기(303)로부터 플레이리스트를 추가 또는 제거하는 것이 종종 필요하다. PlaylistSegment 기록(502)에서 StartOffset 및 EndOffset 필드는 이를 위해 사용된다. 시스템이 5분의 세그먼트를 사용한다고 가정한다. 또한, 제 2 플레이리스트가 기록에 추가되는 세그먼트에 2분을 가정한다. 이 시점에서, 새로운 PlaylistSegment 기록(502)이 생성되고, 세그먼트 기록의 참조 카운트가 증가되며, PlaylistSegment에서 필드는 StartOffset 필드를 제외하고 이전과 같이 작성된다. StartOffset 필드는 세그먼트에 대한 재생이 세그먼트에 120초의 오프셋(offset)에서 시작해야 하는 것을 나타내는 120초로 설정된다. 마찬가지로, 데이터가 다중 플레이리스트로 기록되고, 기록이 단일 플레이리스트에 대해 중지된 경우에, EndOffset 필드는 재생이 중지해야 하는 세그먼트의 종료에서 오프셋으로 설정된다.
지금, 본 원리의 실시예에 따라, 기록을 삭제하는 것에 대해 설명한다. 또한, 이러한 처리는 도 8에 관련하여 설명되어 있다.
각각의 기록은 플레이리스트에 대응한다. 기록이 삭제될 때, 다음 동작들이 세그먼트 데이터베이스에서 실행된다.
1. 기록에 대한 Playlist 기록(501)이 삭제된다.
2. 삭제된 플레이리스트 ID를 참조하는 모든 PlaylistSegment 기록(502)이 삭제된다.
3. 각각의 삭제된 PlaylistSegment 기록(502)에 대해서, 삭제된 PlaylistSegment 기록(502)에서 SegmentID에 대응하는 Segment 기록(503)은 1로 감소된 ReferenceCount 필드를 갖는다.
4. 각각의 Segment 기록(503)에 대해서, 지금, ReferenceCount는 0이고, 새로운 SegmentDelete 기록(504)은 ReferenceCount로 세그먼트에 설정된 SegmentID로 생성된다.
상기 4 동작은 데이터베이스에서 정확하게 실행되어야 하고, 이에 의해, 동작 중에 정전이 발생하는 경우, 데이터베이스가 일관성 상태로 유지된다.
도 9에 대해서 또한 설명한 것처럼, 배경 처리는 SegmentDelete 기록(504)에 주기적으로 질의하고, 대응하는 Segment 기록(503)을 조사하고, IndexFile 및 TransportFile을 삭제하고, 이후에, Segment 기록(503) 및 SegmentDelete 기록(504)을 제거한다. 이는 삭제 이후에 바로 실행될 수 있거나, 이 동작은 디스크 공간이 필요할 때까지 지연될 수 있다.
지금, 본 원리의 실시예에 따라, 타임-시프트에 대한 플레이리스트를 생성하는 것에 관한 설명을 제공한다.
타임-시프트에 대한 플레이리스트의 생성은 다음 두 가지를 제외하고 기록을 위한 플레이리스트의 생성과 동일하다.
1. Playlist 기록에서 UsedForTimeshift 플래그는 TRUE로 설정된다. 셋-톱 박스(200)가 매번 부트되고, TRUE로 UsedForTimeshift를 갖는 모든 Playlist는 타임-시프트 플레이리스트가 재설정을 통해 보존할 필요가 없을 때 삭제된다.
2. 기록의 시작으로부터 PlaylistSegments는 주기적으로 삭제된다. 이 처리는 단지 Playlist 기록이 삭제되지 않고 단지 지정된 PlaylistSegment 기록(502)이 제거되는 전체 플레이리스트를 삭제하는 것과 동일한 처리에 따른다. PlaylistSegments를 주기적으로 삭제하는 것은 타임-시프트 버퍼의 사이즈를 제한한다. 예를 들어, 30분 타임-시프트 버퍼를 유지하고 세그먼트 사이즈가 5분인 경우를 원하는 경우, 플레이리스트에 대한 6개 이상의 완벽한 세그먼트를 유지하지 않을 것이다. 7번째 세그먼트가 완료되었을 때, 플레이리스트에 대한 세그먼트의 전체 수를 다시 6으로 다시 가져오는 제 1 PlaylistSegment를 삭제할 것이다.
지금, 본 원리의 실시예에 따라, 타임-시프트 데이터를 기록으로 변환하는 것에 관해 설명한다. 이러한 처리는 도 10에 대해서 상기에 설명되었다.
기록이 이미 진행중인 이벤트에 대해 요청될 때, 세그먼트 데이터베이스는 이벤트에 대한 시간 범위 및 서비스에 일치하는 Segment 기록(503)에 질의한다. 이는 질의가 StartTime, EndTime 및 Service/ProgramID 필드에 질의함으로써 수행된다. 요청된 이벤트의 서비스 및 시간 범위에 대응하는 세그먼트가 발견된 경우에, 새로운 PlaylistSegment 기록(502)은 이들 세그먼트의 각각에 대해 생성되고, 기록의 시작에서 적당한 시퀀스로 나타나도록 시퀀스 번호가 삽입된다. 제 1 세그먼트의 StartOffset은 이벤트에 대한 시작 시간에 일치하기 위해 필요에 따라 조정된다. 또한, 추가된 세그먼트의 각각에 대한 ReferenceCount 필드가 증가된다. 이러한 처리는 타임-시프트에 사용되는 현존하는 데이터가 임의의 전송 또는 인덱스 파일을 실제로 카피 또는 변경하지 않고 기록에 부가되도록 할 수 있다.
지금, 본 원리의 실시예에 따라, 기록 또는 타임-시프트를 다시 재생하는 것에 관해서 설명한다. 이 처리는 또한 도 12를 참조하여 상기에 설명되어 있다.
기본 재생은 도 4에 관련하여 이미 설명하였다. 지금, 재생 동작 동안 역분할기(403)에 의해 실행되는 데이터베이스 동작을 보다 상세히 설명한다.
시작으로부터 기록을 다시 재생할 때, 역분할기(403)는 최저 시퀀스 번호로 PlaylistSegment 기록(502)에 질의한다. 이때, 역분할기(403)는 TransportFile 및 IndexFile을 찾기 위해 대응하는 Segment 기록(503)에 질의한다. PlaylistSegment 기록에 StartOffset이 0인 경우, 재생은 전송 파일의 시작에서 시작한다. StartOffset이 0가 아닌 경우, 오프셋은 세그먼트의 시작에 대해 기본 시간으로서 StartTime 및 StartPTS 필드를 사용하여 PTS 오프셋으로 변환된다. 인덱스 파일은 지정된 PTS 오프셋에 대응하는 전송 파일에서 바이트 위치를 찾기 위해 주사되고, 재생은 그 위치에서 시작한다.
플레이리스트에서 지정된 오프셋에 대한 탐색을 다루기 위하여, 역분할기(403)는 플레이리스트에 대한 SegmentID의 리스트를 얻기 위해 PlaylistSegment 기록(502)에 질의한다. 이때, 역분할기(403)는 StartTime을 판독하기 위해 최저 시퀀스 번호로 Segment 기록(503)에 질의한다. 이는 플레이리스트에 대한 기본 시작 시간이다. 다음에, 역분할기(403)는 원하는 위치의 절대 시간을 계산하기 위해 기본 시간에 지정된 오프셋을 부가한다. 최종적으로, 역분할기(403)는 플레이리스트의 일부인 Segment 기록(503)에 대해 StartTime 및 EndTime 필드를 비교함으로써 지정된 시간을 포함하는 Segment 기록(503)을 탐색한다. 이는 원하는 위치를 포함하는 전송 및 인덱스 파일을 제공한다. 이때, 원하는 절대 시간은 세그먼트에 대한 기본 시간으로서 Segment 기록(503)에 StartTime 및 StartPTS 필드를 사용하여 PTS 시간 스탬프로 변환되고, 원하는 PTS 오프셋을 계산한다. 이때, 인덱스 파일은 원하는 PTS 오프셋에 대한 전송 파일에서 바이트 오프셋을 찾기 위해 주사된다. 이때, 역분할기(403)는 전송 파일에서 그 지점에서 재생을 시작한다.
불연속 트릭 모드(빨리 감기 및 되감기)는 탐색 동작과 동일한 방식으로 다루어진다. 예를 들어, 4x 빨리 감기를 구현하기 위하여, 역분할기(403)는 매 0.5 초마다 플레이리스트에서 2초 빨리 감기를 탐색할 수 있다. 이는 4x 정상 재생의 속도로 플레이리스트를 통해 주사하는 효과가 있다.
효율적인 탐색 동작에 필요한 데이터베이스 동작을 보장하기 위하여, 데이터베이스(401)는 필요한 질의가 빠르게 실행하는 것을 보장하기 위하여 적당한 인덱싱을 제공할 것으로 예상된다. 또한, 역분할기(403)는 성능을 향상시키기 위하여 데이터베이스(401)로부터 데이터를 캐시하거나 프리-페치할 수 있다. 이러한 세부 사항은 특정 데이터베이스 구현에 한정되며, 본원의 범위를 벗어난다.
지금, 본 원리의 실시예에 따라, 기록 및 서브-기록의 생성 및 관리에 관한 설명을 제공한다.
본 명세서에 설명하는 원리는 사용자가 정의된 시간 범위에 대해 채널에 기록을 생성하고, 연속 기록으로서, 그리고, 기록된 블록 내에 별개의 이벤트로서 기록된 콘텐츠를 관리하게 한다.
사용자가 본 원리를 사용하여 시간 및 채널에 의해 기록을 예약할 때, 전자 프로그램 가이드(EPG) 데이터를 포함하는 데이터베이스의 질의는 어떤 이벤트가 기록에 포함될 것인지를 결정하기 위해 발생한다. 이때, 본 시스템은 다중 기록을 생성한다. 부모 기록(parent recording)은 사용자가 요청한 시간 범위를 커버하는 연속 기록이 될 것이다. 부모 기록과 병행하여, 본 시스템은 EPG 데이터에 의해 보고된 것과 같은 부모 기록이 포함하는 각각의 이벤트에 대한 기록을 생성한다. 아래의 표 1은 이것의 예를 나타낸다.
수동 기록-채널 99에 8PM에서 10PM까지
프로그램 A 프로그램 B 뉴스 특집-대선 토론
따라서, 본 예에 있어서, 본 원리는, 심지어, 사용자가 채널 99에서 8pm에서 10pm까지 기록을 단지 요청했다 할지라도, 4개의 기록을 생성한다. 시스템은 이러한 작업을 실행하는 어떠한 부가적인 데이터를 실제로 기록하지 않는다. 본 원리는 본 명세서에 기재된 바와 같은 세그먼트된 기록 구조를 사용한다.
기록들 사이의 부모-자식 관계로 인하여, 수동 기록은 트리의 루트 노드가 되는 부모와 확장 및 중단될 수 있는 트리 구조로 사용자에 제시될 수 있다. 도 13은 본 원리의 실시예에 따라 예시적인 기록 트리 인덱스(1300)를 도시하는 도면이다. 따라서, 상기 예에 있어서, 기록은 도 13에 도시된 것처럼 사용자에게 디스플레이될 수 있다. "수동 기록- 채녈 99에 8PM에서 10PM까지" 는 트리 인덱스(1300)의 루트(1310)에 도시되어 있다. "프로그램 A", "프로그램 B", 및 "뉴스 특집-대선 토론"은 브랜치 및/또는 리브(1311, 1312, 및 1313)로서 도시되어 있다.
다음, 사용자는 수동 녹화를 재생하도록 선택할 수 있으며, 연속된 블록으로서 모든 것을 볼 수 있을 것이다. 사용자는 또한 기록 내에 단지 프로그램 A를 재생하도록 결정할 수 있고, 재생은 프로그램의 A의 에피소드의 시작에서 시작할 것이며, 프로그램 A의 에피소드의 종료에서 종료될 것이다.
또한, 사용자는 수동 기록을 삭제할 수 있지만 수동 녹화에 포함된 특정 에피소드를 유지하도록 선택할 수 있다. 예를 들어, 사용자는 프로그램 A의 에피소드를 유지하기를 원할 수 있지만, 다른 모든 것을 삭제하기를 원할 수 있다. 실제 기록된 비디오 및 오디오 데이터는 부모 기록과 자식 기록 사이에서 공유되고, 참조 카운트되어, 각각의 세그먼트의 데이터는, 리스트의 임의의 기록에 의해 더 이상 참조되지 않을 때, 디스크로부터 단지 제거된다.
본 설명은 본 원리를 예시한다. 따라서 본 기술에 숙련된 사람들은, 본 명세서에 명시적으로 설명되거나 도시되지 않았지만, 본 원리를 구현하고 그 사상 및 범위에 포함되는 여러 장치를 고안할 수 있다는 것을 이해할 것이다.
본 명세서에서 인용된 모든 예 및 조건부 언어는 독자가 본 기술을 진전시키는 발명자(들)에 의해 기여한 본 원리 및 개념을 이해하는데 도움을 주기 위한 교육적인 목적으로 의도되고, 이러한 구체적으로 인용된 예 및 조건에 제한되지 않는 것으로 해석되어야 한다.
또한, 본 원리의 원리, 관점 및 실시예 뿐만 아니라, 그 특정 예를 나열하는 본 명세서의 모든 서술은 그 구조적 또는 기능적 등가물을 포함하는 것으로 의도되었다. 또한, 그와 같은 등가물이 현재 공지된 등가물 뿐만 아니라 미래에 개발되는 등가물, 예를 들어, 구조와 관계없이, 동일한 기능을 수행하는 개발된 모든 요소들을 포함하는 것으로 의도되었다.
따라서, 예를 들어, 본 명세서에 제시된 블록도는 본 원리를 구현하는 예시된 회로의 개념도를 나타낸다는 것을 본 기술에 숙련된 사람들은 알 수 있을 것이다. 마찬가지로, 임의의 플로우차트, 흐름도, 상태 천이도, 의사 코드 등은 컴퓨터 또는 프로세서가 명시적으로 도시되거나 도시되지 않은 컴퓨터 또는 프로세서에 의해 수행되는 컴퓨터 판독 가능한 미디어 등으로 실질적으로 표현될 수 있는 다양한 처리를 나타낸다는 것을 알 수 있을 것이다.
도면에 도시된 다양한 요소의 기능들은 적절한 소프트웨어와 관련하여 소프트웨어의 실행 가능한 전용 하드웨어의 사용 뿐만 아니라, 하드웨어를 통해 제공될 수 있다. 프로세서에 의해 제공될 때, 기능들은 단일 전용 프로세서에 의해, 단일 공유 프로세서에 의해, 또는 일부가 공유될 수 있는 복수의 개별 프로세서에 의해 제공될 수 있다. 더욱이, 용어 "프로세서" 또는 "제어기"의 명시적인 사용은 소프트웨어를 실행할 수 있는 하드웨어에 대해 독점적으로 참조하는 것으로 해석되어서는 안 되며, 제한 없이, 디지털 신호 프로세서("DSP") 하드웨어, 소프트웨어를 저장하는 판독-전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 및 비-휘발성 저장 장치를 암시적으로 포함할 수 있다.
다른 하드웨어, 종래 및/또는 관습이 또한 포함될 수 있다. 유사하게, 도면에 도시된 임의의 스위치는 단지 개념적이다. 그들의 기능은 프로그램 논리의 동작을 통해, 전용 논리를 통해, 프로그램 제어 및 전용 논리의 상호 작용을 통해, 심지어 수동으로, 실행될 수 있고, 특정 기술은 문맥으로부터 보다 더 구체적으로 이해되는 것으로서 구현자에 의해 선택될 수 있다.
여기서, "결합"의 문구는 하나 이상의 중간 구성 요소들을 통해 직접 접속되거나 간접 접속되는 것을 의미하도록 정의된다. 이러한 중간 구성 요소들은 하드웨어 및 소프트웨어 기반의 구성 요소들 모두를 포함할 수 있다.
청구 범위에 있어서, 특정 기능을 수행하기 위한 수단으로서 표현되는 임의의 요소는, 예를 들어, a) 기능을 수행하는 회로 요소들의 조합, b) 기능을 수행하기 위해 소프트웨어를 실행하는 적당한 회로와 조합된 펌웨어, 마이크로코드 등을 포함하는 임의의 형태의 소프트웨어를 포함하는 기능을 수행하는 임의의 방식을 포함하도록 의도된다. 이러한 청구 범위에 의해 정의된 바와 같은 본 원리는 다양한 인용 수단에 의해 제공되는 기능이 조합되고, 청구 범위가 요구하는 방식으로 함께 제공된다는 사실에 상주한다. 따라서, 이들 기능을 제공할 수 있는 임의의 수단은 본 명세서에 도시된 것과 같다고 간주된다.
명세서에서 본 원리의 "하나의 실시예" 또는 "한 실시예" 뿐만 아니라, 다른 변경안은 실시예에 관련하여 기재된 특정한 기능, 구조, 특징 등이 본 원리의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 관용구인 "하나의 실시예에서" 또는 "실시예에서"의 표현 뿐만 아니라, 명세서 전반에 걸쳐 다양한 장소에 나타나는 임의의 다른 변경안은 반드시 모두 동일한 실시예를 참조하지 않는다.
예를 들어, "A/B", "A 및/또는 B" 및 "A 및 B 중 적어도 하나"의 경우에서, 다음의 “/", "및/또는", 및 "적어도 하나” 중 어느 하나의 이용은, 단지 제 1 리스트된 옵션(A)의 선택 또는, 단지 제 2 리스트된 옵션(B)의 선택, 또는, 두 옵션(A 및 B) 모두의 선택을 포함하는 것으로 의도되었음을 이해해야 한다. 다른 예로서, "A, B, 및/또는 C" 및 "A, B, 및 C 중 적어도 하나"의 경우에서, 이러한 표현은 단지 제 1 리스트된 옵션(A)의 선택 또는, 단지 제 2 리스트된 옵션(B)의 선택, 또는, 단지 제 3 리스트된 옵션(C)의 선택, 또는 단지 제 1 및 제 2 리스트된 옵션(A 및 B)의 선택, 또는 단지 제 1 및 제 3 리스트된 옵션(A 및 C)의 선택, 또는 단지 제 2 및 제 3 리스트된 옵션(B 및 C)의 선택, 또는 모든 3개의 옵션(A 및 B 및 C)의 선택을 포함하는 것으로 의도되었다. 이는 본 기술 및 관련된 기술에 숙련된 사람에 의해 명백한 것처럼, 리스트된 많은 아이템을 위해 연장될 수 있다.
본 원리의 가르침은 여러 형태의 하드웨어, 소프트웨어, 펌웨어, 특정 목적 프로세서, 또는 그들의 조합으로 구현될 수 있다는 것을 이해해야 한다.
더욱 바람직하게, 본 원리의 가르침은 하드웨어 및 소프트웨어의 조합으로서 구현된다. 또한, 소프트웨어는 프로그램 저장 유닛에서 명백하게 구현되는 응용 프로그램으로서 구현될 수 있다. 응용 프로그램은 임의의 적당한 구조를 포함하는 기계에 업-로드될 수 있거나 그 기계에 의해 실행될 수 있다. 바람직하게, 기계는 하나 이상의 중앙 처리 유닛("CPU"), 랜덤 액세스 메모리("RAM"), 및 입/출력("I/O") 인터페이스와 같은 하드웨어를 갖는 컴퓨터 플랫폼에서 실행된다. 컴퓨터 플랫폼은 운영 시스템 및 마이크로 명령 코드를 또한 포함할 수 있다. 본 명세서에 기재된 여러 처리 및 기능은 CPU에 의해 실행될 수 있는 마이크로 명령 코드의 일부 또는 응용 프로그램의 일부, 또는 그들의 조합이 될 수 있다. 또한, 여러 다른 주변 장치는 부가적인 데이터 저장 장치 및 프린트 장치와 같은 컴퓨터 플랫폼에 접속될 수 있다.
첨부된 도면에 도시된 구성 시스템의 구성 요소 및 방법의 일부가 바람직하게는 소프트웨어로 구현되기 때문에, 시스템의 구성 요소들 사이의 실제 접속 및 처리 기능 블록은 본 원리가 프로그램된 방식에 따라 다를 수 있다는 것을 또한 이해해야 한다. 본 명세서에서 제공된 가르침에 의해, 본 기술 분야에 숙련된 사람은 본 원리의 상기 및 유사한 구현 또는 구성을 고려할 수 있을 것이다.
비록, 예시된 실시예가 본 명세서에서 첨부 도면을 참조하여 설명되었지만, 본 원리가 이들 정확한 실시예에 한정되지 않고, 여러 변경안과 수정안이 본 원리의 정신 및 범위에 벗어나지 않고 본 기술 분야에 숙련된 사람에 의해 행해질 수 있음을 이해해야 한다. 이러한 모든 변경안 및 수정안은 첨부된 특허 청구 범위에 기술된 본 원리의 범위 이내에 포함되는 것으로 의도된다.
04: 버스
09: 캐시
10: 디스플레이 어댑터
12: I/O 어댑터
16: 디스플레이 장치
18: 디스크 저장 장치
98: 네트워크 어댑터
114: 사용자 인터페이스 어댑터
96: 트랜시버
120: 마우스
122: 키보드

Claims (18)

  1. 미디어 콘텐츠를 기록하기 위한 시스템으로서,
    미디어 콘텐츠에 대응하는 전송 스트림 데이터 및 인덱스 데이터를 액세스 포인트 경계에 주기적인 간격으로 이산 파일로 분할하기 위한 분할기(303)로서, 각각의 이산 파일은 각각의 전송 세그먼트 및 각각의 인덱스 세그먼트를 포함하는, 분할기(303) 및,
    이산 파일을 저장하기 위한 세그먼트 저장 장치(304)를 포함하고,
    분할기는 전송 스트림 데이터 및 인덱스 데이터를 분할하여, 하나의 프로그램 또는 내부에 다중 프로그램을 포함하는 기록 세션에 대해서, 프로그램 또는 기록 세션 및 각각의 다중 프로그램은 별개의 프로그램으로서 기록되는, 미디어 콘텐츠를 기록하기 위한 시스템.
  2. 제 1 항에 있어서,
    프로그램 또는 기록 세션 및 다중 프로그램에 대한 인덱스는 트리 구조를 사용하여 시청자에게 디스플레이되고, 프로그램 또는 기록 세션은 트리 구조의 루트에 위치되고, 다중 프로그램은 트리 구조의 브랜치 및 리브 중 적어도 하나에 위치되는, 미디어 콘텐츠를 기록하기 위한 시스템.
  3. 제 1 항에 있어서,
    각각의 전송 세그먼트는 별개의 프로그램의 적어도 두 개의 사이에서 공유되는, 미디어 콘텐츠를 기록하기 위한 시스템.
  4. 제 3 항에 있어서,
    각각의 전송 세그먼트는 각각의 전송 세그먼트가 별개의 프로그램 중 어느 하나에 의해 더 이상 참조되지 않을 때만 삭제되는, 미디어 콘텐츠를 기록하기 위한 시스템.
  5. 미디어 콘텐츠를 기록하기 위한 방법으로서,
    미디어 콘텐츠에 대응하는 전송 스트림 데이터 및 인덱스 데이터를 액세스 포인트 경계에 주기적인 간격으로 이산 파일로 분할하는 단계(645)로서, 각각의 이산 파일은 각각의 전송 세그먼트 및 각각의 인덱스 세그먼트를 포함하는, 분할하는 단계(645), 및,
    이산 파일을 세그먼트 저장 장치에 저장하는 단계(645)를 포함하고,
    전송 스트림 데이터 및 인덱스 데이터가 분할되어, 하나의 프로그램 또는 내부에 다중 프로그램을 포함하는 기록 세션에 대해서, 프로그램 또는 기록 세션 및 각각의 다중 프로그램은 별개의 프로그램으로서 기록되는(1300), 미디어 콘텐츠를 기록하기 위한 방법.
  6. 제 5 항에 있어서,
    프로그램 또는 기록 세션 및 다중 프로그램에 대한 인덱스를 트리 구조를 사용하여 시청자에게 디스플레이하는 단계(1300)를 더 포함하고, 프로그램 또는 기록 세션은 트리 구조의 루트에 위치되고, 다중 프로그램은 트리 구조의 브랜치 및 리브 중 적어도 하나에 위치되는, 미디어 콘텐츠를 기록하기 위한 방법.
  7. 제 5 항에 있어서,
    각각의 전송 세그먼트는 별개의 프로그램의 적어도 두 개의 사이에서 공유되는, 미디어 콘텐츠를 기록하기 위한 방법.
  8. 제 7 항에 있어서,
    각각의 전송 세그먼트는 각각의 전송 세그먼트가 별개의 프로그램 중 어느 하나에 의해 더 이상 참조되지 않을 때만 삭제되는, 미디어 콘텐츠를 기록하기 위한 시스템.
  9. 컴퓨터-판독 가능한 프로그램 코드가 삽입된 컴퓨터-판독 가능한 저장 매체로서,
    컴퓨터 시스템에 의해 청구항5의 방법을 실행하도록 하는, 컴퓨터-판독 가능한 저장 매체.
  10. 미디어 콘텐츠를 재생하기 위한 시스템으로서,
    이산 파일을 저장하기 위한 세그먼트 저장 장치(402)로서, 각각의 이산 파일은 미디어 콘텐츠에 대응하는 전송 스트림 데이터 및 인덱스 데이터로부터 얻은 각각의 전송 세그먼트 및 각각의 인덱스 세그먼트를 포함하는, 세그먼트 저장 장치(402)와,
    전송 세그먼트의 연속 재생을 위해 이산 파일로부터 전송 세그먼트들을 재구성하기 위한 역분할기(403)를 포함하고,
    하나의 프로그램 또는 내부에 다중 프로그램을 포함하는 기록 세션에 대해서, 프로그램 또는 기록 세션 및 각각의 다중 프로그램에 대한 전송 세그먼트는 별개의 프로그램으로서 재구성될 수 있는, 미디어 콘텐츠를 재생하기 위한 시스템.
  11. 제 10 항에 있어서,
    프로그램 또는 기록 세션 및 다중 프로그램에 대한 인덱스는 트리 구조를 사용하여 시청자에게 디스플레이되고, 프로그램 또는 기록 세션은 트리 구조의 루트에 위치되고, 다중 프로그램은 트리 구조의 브랜치 및 리브 중 적어도 하나에 위치되는, 미디어 콘텐츠를 재생하기 위한 시스템.
  12. 제 10 항에 있어서,
    각각의 전송 세그먼트는 별개의 프로그램의 적어도 두 개의 사이에서 공유되는, 미디어 콘텐츠를 재생하기 위한 시스템.
  13. 제 12 항에 있어서,
    각각의 전송 세그먼트는 각각의 전송 세그먼트가 별개의 프로그램 중 어느 하나에 의해 더 이상 참조되지 않을 때만 삭제되는, 미디어 콘텐츠를 재생하기 위한 시스템.
  14. 미디어 콘텐츠를 재생하기 위한 방법으로서,
    이산 파일을 세그먼트 저장 장치에 저장하는 단계(645)로서, 각각의 이산 파일은 미디어 콘텐츠에 대응하는 전송 스트림 데이터 및 인덱스 데이터로부터 얻은 각각의 전송 세그먼트 및 각각의 인덱스 세그먼트를 포함하는, 저장 단계(645)와,
    전송 세그먼트의 연속 재생을 위해 이산 파일로부터 전송 세그먼트들을 재구성하는 단계(1230)를 포함하고,
    하나의 프로그램 또는 내부에 다중 프로그램을 포함하는 기록 세션에 대해서, 프로그램 또는 기록 세션 및 각각의 다중 프로그램에 대한 전송 세그먼트는 별개의 프로그램으로서 재구성될 수 있는(1300), 미디어 콘텐츠를 재생하기 위한 방법.
  15. 제 14 항에 있어서,
    프로그램 또는 기록 세션 및 다중 프로그램에 대한 인덱스를 트리 구조를 사용하여 시청자에게 디스플레이하는 단계(1300)를 더 포함하고, 프로그램 또는 기록 세션은 트리 구조의 루트에 위치되고, 다중 프로그램은 트리 구조의 브랜치 및 리브 중 적어도 하나에 위치되는, 미디어 콘텐츠를 재생하기 위한 방법.
  16. 제 14 항에 있어서,
    각각의 전송 세그먼트는 별개의 프로그램의 적어도 두 개의 사이에서 공유되는, 미디어 콘텐츠를 재생하기 위한 방법.
  17. 제 16 항에 있어서,
    각각의 전송 세그먼트는 각각의 전송 세그먼트가 별개의 프로그램 중 어느 하나에 의해 더 이상 참조되지 않을 때만 삭제되는, 미디어 콘텐츠를 재생하기 위한 방법.
  18. 컴퓨터-판독 가능한 프로그램 코드가 삽입된 컴퓨터-판독 가능한 저장 매체로서,
    컴퓨터 시스템에 의해 청구항14의 방법을 실행하도록 하는, 컴퓨터-판독 가능한 저장 매체.
KR1020147018907A 2012-01-09 2012-12-20 서브-기록을 생성 및 관리 KR20150106326A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261584352P 2012-01-09 2012-01-09
US61/584,352 2012-01-09
PCT/US2012/070790 WO2013106182A1 (en) 2012-01-09 2012-12-20 Creating and managing sub-recordings

Publications (1)

Publication Number Publication Date
KR20150106326A true KR20150106326A (ko) 2015-09-21

Family

ID=47521173

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147018907A KR20150106326A (ko) 2012-01-09 2012-12-20 서브-기록을 생성 및 관리

Country Status (7)

Country Link
US (1) US20140341544A1 (ko)
EP (1) EP2803186A1 (ko)
JP (1) JP6077007B2 (ko)
KR (1) KR20150106326A (ko)
CN (1) CN104170373A (ko)
BR (1) BR112014016920A8 (ko)
WO (1) WO2013106182A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140074961A1 (en) * 2012-09-12 2014-03-13 Futurewei Technologies, Inc. Efficiently Delivering Time-Shifted Media Content via Content Delivery Networks (CDNs)
CN106021440B (zh) * 2016-05-16 2019-10-18 中国建设银行股份有限公司 一种搜索方法及装置
EP3343928A1 (en) * 2016-12-29 2018-07-04 Thomson Licensing Method for storing audio/video data and corresponding device
CN113450111A (zh) * 2020-03-27 2021-09-28 中国移动通信集团北京有限公司 数据共享方法、装置、设备及介质
CN113542213B (zh) * 2021-05-27 2023-09-22 新华三大数据技术有限公司 一种访问控制策略生成方法及装置、编排器

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030093790A1 (en) * 2000-03-28 2003-05-15 Logan James D. Audio and video program recording, editing and playback systems using metadata
WO2000074061A1 (en) * 1999-05-28 2000-12-07 Matsushita Electric Industrial Co., Ltd. Semiconductor memory card, playback apparatus, recording apparatus, playback method, recording method, and a computer-readable storage medium
US7260312B2 (en) * 2001-03-05 2007-08-21 Microsoft Corporation Method and apparatus for storing content
DE60204181T2 (de) * 2001-03-07 2006-01-26 Matsushita Electric Industrial Co., Ltd., Kadoma Empfänger mit Speicher
JP4099973B2 (ja) * 2001-10-30 2008-06-11 松下電器産業株式会社 映像データ送信方法及び映像データ受信方法、並びに映像監視システム
JP4490692B2 (ja) * 2002-02-01 2010-06-30 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ビデオデータ信号のシーケンスを記録する装置、記録担体及び方法
JP2006004486A (ja) * 2004-06-16 2006-01-05 Toshiba Corp 情報記録媒体及び情報再生装置
JPWO2006030767A1 (ja) * 2004-09-13 2008-05-15 松下電器産業株式会社 データ処理装置
JPWO2006043499A1 (ja) * 2004-10-18 2008-08-07 パイオニア株式会社 情報処理装置、分類基準情報データベース、情報生成装置、情報処理方法、情報生成方法、情報処理プログラム、情報処理プログラムの記録した記録媒体
JP2006164337A (ja) * 2004-12-02 2006-06-22 Sony Corp データ処理装置およびデータ処理方法、プログラムおよびプログラム記録媒体、並びにデータ記録媒体
US20080101764A1 (en) * 2006-11-01 2008-05-01 General Instrument Corporation Method and Apparatus for Managing Multimedia Content Recording Assets
US8520852B2 (en) * 2006-12-22 2013-08-27 Ibiquity Digital Corporation Method and apparatus for store and replay functions in a digital radio broadcasting receiver
US20080225940A1 (en) * 2007-03-16 2008-09-18 Chen Ma Digital video apparatus and method thereof for video playing and recording
US20080310820A1 (en) * 2007-06-14 2008-12-18 International Business Machines Corporation Optimizing digital video recorder storage space by commercial skip management
US8954596B2 (en) * 2010-04-02 2015-02-10 Netflix, Inc. Dynamic virtual chunking of streaming media content

Also Published As

Publication number Publication date
JP2015508610A (ja) 2015-03-19
EP2803186A1 (en) 2014-11-19
CN104170373A (zh) 2014-11-26
BR112014016920A2 (pt) 2017-06-13
US20140341544A1 (en) 2014-11-20
BR112014016920A8 (pt) 2017-07-04
JP6077007B2 (ja) 2017-02-08
WO2013106182A1 (en) 2013-07-18

Similar Documents

Publication Publication Date Title
US8861935B2 (en) Systems and methods for enhancing utilization of recorded media content programs
US9191610B2 (en) Systems and methods for creating logical media streams for media storage and playback
KR100664948B1 (ko) 방송 녹화 장치와 휴대용 컨텐츠 재생 장치 간의 방송컨텐츠 동기화 방법 및 이를 위한 장치
US20200329269A1 (en) Network Recorder Buffer
US20080250101A1 (en) Multimedia data transmitting apparatus and multimedia data receiving apparatus
US20060257123A1 (en) System and a method for recording a broadcast displayed on a mobile device
JP6077007B2 (ja) サブレコーディングの作成および管理
US9640220B2 (en) Managing time-shift data
KR20030022288A (ko) 실시간 온라인 시청자 피드백 성능을 갖춘 비디오 재생장치 및 동작 방법
US10210906B2 (en) Content playback and recording based on scene change detection and metadata
JP2008165859A (ja) 記録装置、記録再生システム、記録方法
KR101007881B1 (ko) 방송 프로그램의 연속 녹화 제어 방법
US8442388B1 (en) System and method for recording video content
KR20080103733A (ko) 영상파일 관리방법 및 이를 적용한 영상 기기
US20150071608A1 (en) Receiving device, transmitting device and transmitting/receiving system
US20140282758A1 (en) Method of time shifting in a digital tv and apparatus using the same
KR20150093704A (ko) 동일한 디지털 비디오 및/또는 오디오 스트림의 복수의 오버랩하는 레코딩들을 저장하는 디바이스 및 방법
JP2007288528A (ja) 録画機能付装置及びその番組リスト処理方法
JP5839195B2 (ja) 録画装置、サムネイル管理情報作成装置、録画方法および録画プログラム
Newton et al. Recording interactive TV
Tan et al. Solutions and systems for recording interactive TV
Tan et al. Recording interactive TV
KR100774195B1 (ko) 방송 재생 장치 및 방송 재생 방법
KR20040110639A (ko) 피브이알 시스템의 방송 프로그램 삭제 방법
KR20070057458A (ko) 디지털 방송 시스템에서의 애플리케이션 데이터 관리 방법

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination