KR102118573B1 - 동적 해상도 스위칭을 사용하는 실시간 비디오 인코더 레이트 제어 - Google Patents

동적 해상도 스위칭을 사용하는 실시간 비디오 인코더 레이트 제어 Download PDF

Info

Publication number
KR102118573B1
KR102118573B1 KR1020187010575A KR20187010575A KR102118573B1 KR 102118573 B1 KR102118573 B1 KR 102118573B1 KR 1020187010575 A KR1020187010575 A KR 1020187010575A KR 20187010575 A KR20187010575 A KR 20187010575A KR 102118573 B1 KR102118573 B1 KR 102118573B1
Authority
KR
South Korea
Prior art keywords
resolution
frame
video stream
encoding
bit rate
Prior art date
Application number
KR1020187010575A
Other languages
English (en)
Other versions
KR20180054717A (ko
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 KR20180054717A publication Critical patent/KR20180054717A/ko
Application granted granted Critical
Publication of KR102118573B1 publication Critical patent/KR102118573B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • H04N19/194Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive involving only two passes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234363Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution
    • H04N21/234372Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution for performing aspect ratio conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

동적 해상도 스위칭은 비디오 스트림의 단일-패스 및 2-패스 인코딩을 위한 타겟 비트레이트를 달성한다. 단일-패스 인코더는, 프레임에 대한 인코딩 비트레이트가 타겟 비트레이트를 충족하는지 여부를 결정한다. 충족하지 않는다면, 프레임을 인코딩하기 위해 사용되는 양자화 파라미터는, 비디오 해상도가 조정될 필요가 있는지 여부를 결정하도록 최소 및 최대 임계치 값들에 대해 비교된다. 2-패스 인코더는 양자화 파라미터를 사용하여 입력 프레임을 인코딩하며, 입력 프레임이 인코딩되는 비트레이트에 기반하여, 제2 패스 동안 프레임을 인코딩하기 위한 비디오 해상도가 조정될 수 있는지 여부를 결정한다. 해상도는, 프레임을 코딩하기 위해 사용되는 모션 탐색 영역에 대한 인코더 제한들에 기반하여 조정될 수 있다.

Description

동적 해상도 스위칭을 사용하는 실시간 비디오 인코더 레이트 제어
[0001] 디지털 비디오 스트림들은 통상적으로, 프레임들 또는 스틸 이미지들의 시퀀스를 사용하는 비디오를 표현한다. 각각의 프레임은 다수의 블록들을 포함할 수 있으며, 그 블록들은 차례로 픽셀들에 대한 컬러, 밝기 또는 다른 속성들의 값을 설명하는 정보를 포함할 수 있다. 통상적인 비디오 스트림의 데이터의 양은 크며, 비디오의 송신 및 저장은 상당한 컴퓨팅 또는 통신 리소스들을 사용할 수 있다. 비디오 데이터에 수반되는 많은 양의 데이터로 인해, 높은 성능 압축이 송신 및 저장을 위해 필요하다. 추가로, 이용가능한 연결들에 기반하여, 최적화된 해상도들로 품질 비디오 데이터를 스트리밍할 수 있는 것이 바람직하다.
[0002] 본 명세서에 개시된 것은, 비디오 스트림을 인코딩하기 위한 타겟 비트레이트를 달성하기 위해 동적 해상도 스위칭을 사용하기 위한 시스템들, 방법들, 및 장치들의 양상들이다. 본 개시내용의 일 양상에 따른 장치는, 비디오 스트림의 복수의 프레임들 중 제1 프레임을 식별하고, 양자화 파라미터를 표현하는 제1 비트레이트로 제1 프레임을 인코딩하고, 제1 프레임을 인코딩하는 것에 대한 응답으로 모션 탐색 영역에 대한 하나 또는 그 초과의 인코더 제한들을 식별하고, 제1 프레임에 대한 타겟 비트레이트와 제1 비트레이트를 비교하고, 최소 양자화 임계치 및 최대 양자화 임계치 중 하나와 양자화 파라미터를 비교하고, 타겟 비트레이트와 제1 비트레이트를 비교하고 최소 양자화 임계치 및 최대 양자화 임계치 중 하나와 양자화 파라미터를 비교하는 것에 대한 응답으로 적어도 하나의 인코딩 파라미터를 조정하고, 비디오 스트림의 제2 프레임을 식별하고, 조정된 적어도 하나의 인코딩 파라미터를 사용하여 제2 비트레이트로 제2 프레임을 인코딩하며, 그리고 인코딩된 제1 프레임 및 인코딩된 제2 프레임을 출력 비트스트림에서 송신하도록 배열된다.
[0003] 본 개시내용의 다른 양상에 따른 장치는, 복수의 프레임들 중 입력 프레임을 식별하고, 입력 양자화 파라미터를 사용하여 입력 프레임을 인코딩하고, 입력 프레임을 인코딩하는 것에 대한 응답으로 모션 탐색 영역에 대한 하나 또는 그 초과의 인코더 제한들을 식별하고, 입력 프레임을 인코딩하는 것에 대한 응답으로 다수의 비트들을 생성하고, 입력 프레임을 인코딩하기 위한 비트들의 수 및 타겟 비트레이트에 기반하여 적어도 하나의 인코딩 파라미터를 조정하고, 적어도 하나의 인코딩 파라미터를 사용하여 입력 프레임을 인코딩함으로써, 인코딩된 프레임을 생성하며, 그리고 인코딩된 프레임을 출력 비트스트림에서 송신하도록 배열된다.
[0004] 본 개시내용의 다른 양상에 따른 장치는, 복수의 프레임들 중 입력 프레임을 식별하고, 일정한(constant) 양자화 파라미터를 표현하는 제1 비트레이트로 입력 프레임을 인코딩하고, 입력 프레임을 인코딩하는 것에 대한 응답으로 모션 탐색 영역에 대한 하나 또는 그 초과의 인코더 제한들을 식별하고, 입력 프레임에 대한 최소 타겟 비트레이트 및 최대 타겟 비트레이트 중 하나와 제1 비트레이트를 비교하고, 최소 타겟 비트레이트 및 최대 타겟 비트레이트 중 하나와 제1 비트레이트를 비교하는 것에 대한 응답으로 적어도 하나의 인코딩 파라미터를 조정하고, 적어도 하나의 인코딩 파라미터를 사용하여 입력 프레임을 인코딩함으로써, 인코딩된 프레임을 생성하며, 그리고 인코딩된 프레임을 출력 비트스트림에서 송신하도록 배열된다.
[0005] 본 명세서의 위 및 다른 곳에서 기재된 바와 같은 장치는 설명된 바와 같은 장치를 실시하기 위해 컴퓨터 메모리에 저장된 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함할 수 있다. 본 개시내용의 양상들은 또한 대응하는 방법들, 및 적합한 컴퓨터 시스템 상에서 실행될 경우 그러한 명령들 또는 방법들을 수행하기 위한 컴퓨터 프로그램 코드를 보유하는 하나 또는 그 초과의 대응하는 컴퓨터-판독가능 매체들을 제공한다.
[0006] 본 개시내용의 이들 및 다른 양상들은 실시예들의 다음의 상세한 설명, 첨부된 청구범위 및 첨부한 도면들에서 개시된다.
[0007] 본 발명은 첨부한 도면들과 함께 판독될 경우 다음의 상세한 설명으로부터 매우 양호하게 이해된다. 유사한 번호들은 달리 언급되지 않으면 다양한 도면들 내의 유사한 엘리먼트들을 지칭한다.
[0008] 도 1a는 최대화된 양자화 파라미터로 인해 오버슈트된(overshot) 비디오 스트림을 인코딩하기 위한 타겟 비트레이트를 도시한 그래프이다.
[0009] 도 1b는 최소화된 양자화 파라미터로 인해 언더슈트된(undershot) 비디오 스트림을 인코딩하기 위한 타겟 비트레이트를 도시한 그래프이다.
[0010] 도 2는 비디오 인코딩 및 디코딩 시스템의 개략도이다.
[0011] 도 3은 송신 스테이션 또는 수신 스테이션을 구현할 수 있는 컴퓨팅 디바이스의 일 예의 블록 다이어그램이다.
[0012] 도 4는 인코딩되고 후속하여 디코딩될 통상적인 비디오 스트림의 다이어그램이다.
[0013] 도 5는 본 명세서의 교시들의 일 양상에 따른 비디오 압축 시스템의 블록 다이어그램이다.
[0014] 도 6은 본 명세서의 교시들의 다른 양상에 따른 비디오 압축해제 시스템의 블록 다이어그램이다.
[0015] 도 7은 단일-패스 인코딩(single-pass encoding)에서 타겟 인코딩 비트레이트를 달성하기 위한 프로세스의 일 예의 흐름도 다이어그램이다.
[0016] 도 8은 2-패스 인코딩(two-pass encoding)에서 타겟 인코딩 비트레이트를 달성하기 위한 프로세스의 일 예의 흐름도 다이어그램이다.
[0017] 비디오 인코더들에서의 레이트 제어 알고리즘은, 입력 데이터의 복잡도가 시간에 걸쳐 변하는 경우 인코더가 일정한 비트레이트를 생성하게 유지하는 것을 목표로 한다. 일정한 비트레이트는, 이전의 프레임(들)이 생성했던 비트들의 양에 기반하여 각각의 프레임에 대한 양자화 파라미터(QP)를 조정함으로써 달성될 수 있다. 일반적으로, 더 높은 양자화는 비트레이트를 감소시키고, 더 낮은 양자화는 비트레이트를 증가시킨다. 양자화 파라미터는, 비디오 스트림의 데이터가 인코더에 의해 양자화되는 스케일(scale)을 표시한다. 즉, 더 높은 양자화 파라미터가 인코더에 의해 사용되는 경우, 양자화 스테이지는 더 높은 양자화 파라미터들에 대해서는 비디오 데이터의 더 높은 감소를 수반하고, 더 낮은 양자화 파라미터들에 대해서는 비디오 데이터의 더 낮은 감소를 수반한다. 결과적인 양자화된 비디오 데이터는, 데이터를 포함하는 비디오 스트림의 프레임이 인코딩되는 비트레이트를 표시한다. 일반적으로, 비디오 스트림의 주어진 프레임에 대해, 더 높은 양자화 파라미터의 사용은 더 낮은 프레임 비트레이트를 초래할 것이고, 더 낮은 양자화 파라미터의 사용은 더 높은 프레임 비트레이트를 초래할 것이다.
[0018] 그럼에도, 비디오 시퀀스의 복잡도 및 인코더의 다양한 능력들에 의존하여, 타겟 비트레이트가 주어진 비디오 스트림을 인코딩하기 위해 충족될 수 없는 경우들에 존재할 수 있다. 이것은, QP가 이미 최대값 임계치(예컨대, 추가적인 증가들이 명백한 시각적인 아티팩트들을 생성함으로써 해상도에 비해 비디오 품질을 감소시킬 QP에 대한 값)로 상한이 정해져 있지만, 비트레이트가 여전히 충분히 낮지 않아서, 비트레이트 오버슈트를 초래하기 때문일 수 있다. 대안적으로, 큰 QP의 사용은 비디오 품질에 유해한 코딩 아티팩트들을 초래할 수 있다. 유사하게, 주어진 대역폭으로 사용자에 대한 비디오 품질을 최적화하기 위한 소망이 있고, QP가 최소값 임계치(예컨대, 추가적인 감소들이 해상도에 비해 비디오 품질을 개선시키는 것에 대한 영향을 갖지 않는 QP에 대한 값)에 도달하면, 비디오 품질을 추가로 개선시키기 위한 방식이 존재하지 않을 수 있다. 따라서, 사용자 경험은 악화된다.
[0019] 도 1a 및 도 1b는, 각각, 최대화된 양자화 파라미터로 인해 오버슈트되고, 최소화된 양자화 파라미터로 인해 언더슈트되는 비디오 스트림을 인코딩하기 위한 타겟 비트레이트를 도시한그래프들이다. 수평 축들은 인코더에 의해 인코딩되는 비디오 스트림의 프레임들의 연속적인 진행을 표시하고, 수직 축들은 주어진 프레임에 대해 인코더의 양자화 스테이지에서 사용되는 양자화 파라미터를 표시한다. 비디오 스트림의 프레임들을 인코딩하기 위한 최소 QP 임계치(100) 및 최대 QP 임계치(102)는 타겟 비트레이트(104)에 비해 상수 값들로서 도시된다. 도면들은, 인코딩되는 데이터에 의존하여, 타겟 비트레이트(104)가 QP(106)를 증가 또는 감소시킴으로써만 획득가능하지는 않을 수 있다는 것을 추가로 표시한다. 프레임 비트레이트(108)는, 예컨대, 주어진 프레임을 포함하는 입력 데이터를 인코딩하는 복잡도로 인해 변동될 수 있다.
[0020] 도 1a에 도시된 바와 같이, 프레임 비트레이트(108)는 비디오 스트림의 데이터가 더 복잡해짐에 따라 증가한다. 프레임 비트레이트(108)의 증가에 대한 응답으로, 인코더는, 비디오 스트림에 대한 타겟 비트레이트(104)를 유지하려는 시도로 QP(106)를 증가시킨다. 그러나 결국, QP(106)는 최대 QP 임계치(102)에 도달하며, 따라서 추가로 증가될 수 없지만, 인코딩되는 데이터가 타겟 비트레이트(104)를 달성하기에는 너무 크게 유지되기 때문에, 프레임 비트레이트(108)는 여전히 타겟 비트레이트(104)에 도달하지 않는다. 이것은, 최대 QP 임계치(102)의 상한이 정해져 있음에도 불구하고 프레임 비트레이트(108)가 여전히 타겟 비트레이트(104) 위에 있으므로, 비트레이트 오버슈트로 지칭된다. 유사하게, 도 1b에 도시된 바와 같이, 인코더는 QP(106)를 감소시킬 수 있으며, 여기서, 인코더는 프레임 비트레이트(108)가 너무 낮기 때문에 타겟 비트레이트(104)가 달성되지 않는다고 결정한다. 그러나, 최소 QP 임계치(100)에 도달함에도 불구하고 프레임 비트레이트(108)가 타겟 비트레이트(104) 아래로 유지된다면, 비트레이트 언더슈트가 초래된다.
[0021] 따라서, 종래의 인코더들은 단지 QP의 조정에 의해 비디오 데이터를 인코딩하기 위한 일정한 비트레이트를 달성하는 것이 가능하지 않다. 추가로, 몇몇 인코더들이 인코딩을 위한 키(key) 프레임을 삽입할 수 있지만, 그 솔루션은 적어도 그것이 키 프레임을 코딩할 경우 비트레이트 피크를 필연적으로 야기한다는 이유 때문에 최적이지 않다. 대조적으로, 본 개시내용은, 인코딩 동안 해상도를 스위칭함으로써 레이트 제어의 성능을 개선시키기 위한 동적 기준 프레임 스케일링을 설명한다. 그에 따라, 예컨대, 기준 프레임에 대한 예측 신호를 형성하기 전에 그 기준 프레임을 내부적으로 스케일링하는 인코더에 의해 레이트 제어가 달성된다. 비디오 스트림을 인코딩하기 위한 단일-패스 및 2-패스 인코더들이 설명된다. 2-패스 인코더에서, 제1 패스는 일정한 양자화기를 사용하여 비디오 스트림의 프레임들을 인코딩하고, 제2 패스는, 어떤 프레임들이 복잡하고 어떤 것이 용이한지를 사전에 알아서 각각의 프레임에 대한 비트들을 최적으로 할당한다. 동적 기준 프레임 스케일링의 추가적인 세부사항들은, 그것이 구현될 수 있는 시스템을 초기에 참조하여 본 명세서에서 설명된다.
[0022] 도 2는 비디오 인코딩 및 디코딩 시스템(200)의 개략도이다. 송신 스테이션(202)은, 예컨대, 도 3에 설명된 것과 같은 하드웨어의 내부 구성을 갖는 컴퓨터일 수 있다. 그러나, 송신 스테이션(202)의 다른 적합한 구현들이 가능하다. 예컨대, 송신 스테이션(202)의 프로세싱은 다수의 디바이스들 사이에 분배될 수 있다.
[0023] 네트워크(204)는 비디오 스트림의 인코딩 및 디코딩을 위해 송신 스테이션(202)과 수신 스테이션(206)을 연결시킬 수 있다. 구체적으로, 비디오 스트림은 송신 스테이션(202)에서 인코딩될 수 있고, 인코딩된 비디오 스트림은 수신 스테이션(206)에서 디코딩될 수 있다. 네트워크(204)는, 예컨대, 인터넷일 수 있다. 네트워크(204)는 또한, 로컬 영역 네트워크(LAN), 광역 네트워크(WAN), 가상의 사설 네트워크(VPN), 셀룰러 텔레폰 네트워크 또는 송신 스테이션(202)으로부터 이러한 예에서는 수신 스테이션(206)으로 비디오 스트림을 전달하는 임의의 다른 수단일 수 있다.
[0024] 일 예에서, 수신 스테이션(206)은 도 3에 설명된 것과 같은 하드웨어의 내부 구성을 갖는 컴퓨터일 수 있다. 그러나, 수신 스테이션(206)의 다른 적합한 구현들이 가능하다. 예컨대, 수신 스테이션(206)의 프로세싱은 다수의 디바이스들 사이에 분배될 수 있다.
[0025] 비디오 인코딩 및 디코딩 시스템(200)의 다른 구현들이 가능하다. 예컨대, 일 구현은 네트워크(204)를 생략할 수 있다. 다른 구현에서, 비디오 스트림은 인코딩되며, 그 후, 추후의 시간에 수신 스테이션(206) 또는 메모리를 갖는 임의의 다른 디바이스로의 송신을 위해 저장될 수 있다. 일 구현에서, 수신 스테이션(206)은 (예컨대, 네트워크(204), 컴퓨터 버스, 및/또는 몇몇 통신 통로를 통해) 인코딩된 비디오 스트림을 수신하고, 추후의 디코딩을 위해 비디오 스트림을 저장한다. 예시적인 구현에서, 실시간 전송 프로토콜(RTP)이 네트워크(204)를 통한 인코딩된 비디오의 송신을 위해 사용된다. 다른 구현에서, RTP 이외의 전송 프로토콜, 예컨대, HTTP-기반 비디오 스트리밍 프로토콜이 사용될 수 있다.
[0026] 예컨대, 비디오 회의 시스템에서 사용되는 경우, 송신 스테이션(202) 및/또는 수신 스테이션(206)은 아래에 설명되는 바와 같이 비디오 스트림을 인코딩 및 디코딩 둘 모두를 행하기 위한 능력을 포함할 수 있다. 예컨대, 수신 스테이션(206)은, 디코딩 및 뷰잉하기 위해 비디오 회의 서버(예컨대, 송신 스테이션(202))로부터 인코딩된 비디오 비트스트림을 수신하고, 다른 참가자들에 의한 디코딩 및 뷰잉을 위해 그 자신의 비디오 비트스트림을 추가로 인코딩하고 비디오 회의 서버에 송신하는 비디오 회의 참가자일 수 있다.
[0027] 도 3은 송신 스테이션 또는 수신 스테이션을 구현할 수 있는 컴퓨팅 디바이스(300)의 일 예의 블록 다이어그램이다. 예컨대, 컴퓨팅 디바이스(300)는 도 2의 송신 스테이션(202) 및 수신 스테이션(206) 중 하나 또는 둘 모두를 구현할 수 있다. 컴퓨팅 디바이스(300)는, 다수의 컴퓨팅 디바이스들을 포함하는 컴퓨팅 시스템의 형태이거나, 또는 단일 컴퓨팅 디바이스, 예컨대 모바일 폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 노트북 컴퓨터, 데스크톱 컴퓨터 등의 형태일 수 있다.
[0028] 컴퓨팅 디바이스(300) 내의 CPU(302)는 종래의 중앙 프로세싱 유닛일 수 있다. 대안적으로, CPU(302)는 현재-존재하거나 이후에 개발되는 정보를 조작 또는 프로세싱할 수 있는 임의의 다른 타입의 디바이스 또는 다수의 디바이스들일 수 있다. 개시된 구현들이 도시된 바와 같은 단일 프로세서, 예컨대, CPU(302)를 이용하여 실시될 수 있지만, 속도 및 효율에서의 이점들은 1개 초과의 프로세서를 사용하여 달성될 수 있다.
[0029] 컴퓨팅 디바이스(300) 내의 메모리(304)는 일 구현에서 판독 전용 메모리(ROM) 디바이스 또는 랜덤 액세스 메모리(RAM) 디바이스일 수 있다. 임의의 다른 적합한 타입의 저장 디바이스가 메모리(304)로서 사용될 수 있다. 메모리(304)는 버스(312)를 사용하여 CPU(302)에 의해 액세스되는 코드 및 데이터(306)를 포함할 수 있다. 메모리(304)는 운영 시스템(308) 및 애플리케이션 프로그램들(310)을 더 포함할 수 있으며, 애플리케이션 프로그램들(310)은 CPU(302)가 본 명세서에 설명되는 방법들을 수행하게 허용하는 적어도 하나의 프로그램을 포함한다. 예컨대, 애플리케이션 프로그램들(310)은, 본 명세서에 설명되는 방법들을 수행하는 비디오 코딩 애플리케이션을 더 포함하는 애플리케이션들 1 내지 N을 포함할 수 있다. 컴퓨팅 디바이스(300)는 또한, 예컨대 모바일 컴퓨팅 디바이스와 함께 사용되는 메모리 카드일 수 있는 2차 저장소(314)를 포함할 수 있다. 비디오 통신 세션들이 상당한 양의 정보를 포함할 수 있기 때문에, 그들은 2차 저장소(314)에 전체적으로 또는 부분적으로 저장되고, 프로세싱을 위해 필요할 때 메모리(304)로 로딩될 수 있다.
[0030] 컴퓨팅 디바이스(300)는 또한, 디스플레이(318)와 같은 하나 또는 그 초과의 출력 디바이스들을 포함할 수 있다. 일 예에서, 디스플레이(318)는 터치 입력들을 감지하도록 동작가능한 터치 감지 엘리먼트와 디스플레이를 결합하는 터치 감지 디스플레이일 수 있다. 디스플레이(318)은 버스(312)를 통해 CPU(302)에 커플링될 수 있다. 사용자가 컴퓨팅 디바이스(300)를 프로그래밍하게 하거나 그렇지 않으면 사용하게 허용하는 다른 출력 디바이스들이 디스플레이(318)에 부가하여 또는 그 대안으로서 제공될 수 있다. 출력 디바이스가 디스플레이이거나 또는 그를 포함하는 경우, 디스플레이는 액정 디스플레이(LCD), 음극선관(CRT) 디스플레이 또는 발광 다이오드(LED) 디스플레이, 이를테면 OLED 디스플레이를 포함하는 다양한 방식들로 구현될 수 있다.
[0031] 컴퓨팅 디바이스(300)는 또한, 이미지-감지 디바이스(320), 예컨대 카메라, 또는 컴퓨팅 디바이스(300)를 동작시키는 사용자의 이미지와 같은 이미지를 감지할 수 있는 현재 존재하거나 이후에 개발되는 임의의 다른 이미지-감지 디바이스(320)를 포함하거나 그와 통신할 수 있다. 이미지-감지 디바이스(320)는, 그 디바이스가 컴퓨팅 디바이스(300)를 동작시키는 사용자를 향해 지향되도록 포지셔닝될 수 있다. 일 예에서, 이미지-감지 디바이스(320)의 포지션 및 광학 축은 시야가 영역을 포함하도록 구성될 수 있으며, 그 영역은 디스플레이(318)에 직접 인접하고 그 영역으로부터 디스플레이(318)가 가시적이다.
[0032] 컴퓨팅 디바이스(300)는 또한, 사운드-감지 디바이스(322), 예컨대 마이크로폰, 또는 컴퓨팅 디바이스(300) 근처의 사운드들을 감지할 수 있는 현재 존재하거나 이후에 개발되는 임의의 다른 사운드-감지 디바이스를 포함하거나 그와 통신할 수 있다. 사운드-감지 디바이스(322)는, 그 디바이스가 컴퓨팅 디바이스(300)를 동작시키는 사용자를 향해 지향되도록 포지셔닝될 수 있고, 사용자가 컴퓨팅 디바이스(300)를 동작시키는 동안 사용자에 의해 만들어진 사운드들, 예컨대, 스피치 또는 다른 발언(utterance)들을 수신하도록 구성될 수 있다.
[0033] 도 3이 단일 유닛으로 통합되는 것으로 컴퓨팅 디바이스(300)의 CPU(302) 및 메모리(304)를 도시하지만, 다른 구성들이 이용될 수 있다. CPU(302)의 동작들은, 로컬 영역 또는 다른 네트워크에 직접 또는 그에 걸쳐 커플링될 수 있는 다수의 머신들(각각의 머신은 프로세서들 중 하나 또는 그 초과를 가짐)에 걸쳐 분산될 수 있다. 메모리(304)는 컴퓨팅 디바이스(300)의 동작들을 수행하는 다수의 머신들 내의 메모리 또는 네트워크-기반 메모리와 같이 다수의 머신들에 걸쳐 분산될 수 있다. 단일 버스로서 본 명세서에 도시되지만, 컴퓨팅 디바이스(300)의 버스(312)는 다수의 버스들로 구성될 수 있다. 추가로, 2차 저장소(314)는 컴퓨팅 디바이스(300)의 다른 컴포넌트들에 직접 커플링될 수 있거나, 또는 네트워크를 통해 액세스될 수 있으며, 메모리 카드와 같은 단일의 통합된 유닛 또는 다수의 메모리 카드들과 같은 다수의 유닛들을 포함할 수 있다. 따라서, 컴퓨팅 디바이스(300)는 광범위하게 다양한 구성들로 구현될 수 있다.
[0034] 도 4는 인코딩되고 후속하여 디코딩될 비디오 스트림(400)의 일 예의 다이어그램이다. 비디오 스트림(400)은 비디오 시퀀스(402)를 포함한다. 다음의 레벨에서, 비디오 시퀀스(402)는 다수의 인접한 프레임들(404)을 포함한다. 3개의 프레임들이 인접한 프레임들(404)로서 도시되지만, 비디오 시퀀스(402)는 임의의 수의 인접한 프레임들(404)을 포함할 수 있다. 그 후, 인접한 프레임들(404)은 개별 프레임들, 예컨대, 프레임(406)으로 추가로 세분될 수 있다. 다음의 레벨에서, 프레임(406)은 일련의 세그먼트들 또는 평면들(408)로 분할될 수 있다. 세그먼트들(408)은 예컨대, 병렬 프로세싱을 허용하는 프레임들의 서브세트들일 수 있다. 세그먼트들(408)은 또한, 비디오 데이터를 별개의 컬러들로 분리시킬 수 있는 프레임들의 서브세트들일 수 있다. 예컨대, 컬러 비디오 데이터의 프레임(406)은 휘도 평면 및 2개의 크로미넌스(chrominance) 평면들을 포함할 수 있다. 세그먼트들(408)은 상이한 해상도들로 샘플링될 수 있다.
[0035] 프레임(406)이 세그먼트들(408)로 분할되는지 여부에 관계없이, 프레임(406)은 블록들(410)로 추가로 세분될 수 있으며, 그 블록들은, 예컨대 프레임(406) 내의 16×16 픽셀들에 대응하는 데이터를 포함할 수 있다. 블록들(410)은 또한, 픽셀 데이터의 하나 또는 그 초과의 평면들(408)로부터의 데이터를 포함하도록 배열될 수 있다. 블록들(410)은 또한, 4×4 픽셀들, 8×8 픽셀들, 16×8 픽셀들, 8×16 픽셀들, 16×16 픽셀들 또는 그 초과와 같은 임의의 다른 적합한 사이즈를 가질 수 있다. 달리 언급되지 않으면, 용어들 블록 및 매크로블록은 본 명세서에서 상호교환가능하게 사용된다.
[0036] 도 5는 일 구현에 따른 인코더(500)의 블록 다이어그램이다. 인코더(500)는 위에서 설명된 바와 같이, 이를테면 메모리, 예컨대 메모리(304)에 저장된 컴퓨터 소프트웨어 프로그램을 제공함으로써 송신 스테이션(202)에서 구현될 수 있다. 컴퓨터 소프트웨어 프로그램은, CPU(302)와 같은 프로세서에 의해 실행될 경우 송신 스테이션(202)으로 하여금 도 5에 설명된 방식으로 비디오 데이터를 인코딩하게 하는 머신 명령들을 포함할 수 있다. 인코더(500)는 또한, 예컨대 송신 스테이션(202)에 포함된 특수화된 하드웨어로서 구현될 수 있다. 하나의 특히 바람직한 구현에서, 인코더(500)는 하드웨어 인코더이다. 인코더(500)는, 입력으로서 비디오 스트림(400)을 사용하여, 인코딩된 또는 압축된 비트스트림(520)을 생성하기 위해 (실선의 연결 라인들에 의해 도시된) 순방향 경로에서 다양한 기능들을 수행하기 위한 다음의 스테이지들, 즉 인트라/인터 예측 스테이지(502), 변환 스테이지(504), 양자화 스테이지(506), 및 엔트로피 인코딩 스테이지(508)를 갖는다. 인코더(500)는 또한, 미래의 블록들의 인코딩을 위해 프레임을 재구성하기 위한 (점선 연결 라인들에 의해 도시된) 재구성 경로를 포함할 수 있다. 도 5에서, 인코더(500)는 재구성 경로에서 다양한 기능들을 수행하기 위한 다음의 스테이지들, 즉 역양자화 스테이지(510), 역변환 스테이지(512), 재구성 스테이지(514), 및 루프 필터링 스테이지(516)를 갖는다. 인코더(500)의 다른 구조적 변경들이 비디오 스트림(400)을 인코딩하기 위해 사용될 수 있다.
[0037] 비디오 스트림(400)이 인코딩을 위해 제시되는 경우, 각각의 프레임(406)은 블록들의 단위들로 프로세싱될 수 있다. 인트라/인터 예측 스테이지(502)에서, 각각의 블록은 인트라-프레임 예측(또한 인트라 예측으로 지칭됨) 또는 인터-프레임 예측(또한 인터 예측으로 지칭됨)을 사용하여 인코딩될 수 있다. 임의의 경우에서, 예측 블록이 형성될 수 있다. 인트라-예측의 경우, 예측 블록은 이전에 인코딩 및 재구성되었던 현재의 프레임 내의 샘플들로부터 형성될 수 있다. 인터-예측의 경우, 예측 블록은 하나 또는 그 초과의 이전에 구성된 기준 프레임들 내의 샘플들로부터 형성될 수 있다.
[0038] 다음으로, 도 5를 계속 참조하면, 예측 블록은 잔차(residual) 블록(또한 잔차로 지칭됨)을 생성하기 위해 인트라/인터 예측 스테이지(502)에서 현재의 블록으로부터 감산될 수 있다. 변환 스테이지(504)는 예컨대, 블록-기반 변환들을 사용하여 주파수 도메인의 변환 계수들로 잔차를 변환한다. 양자화 스테이지(506)는 양자화기 값 또는 양자화 레벨을 사용하여, 양자화된 변환 계수들로 지칭되는 이산 양자 값들로 변환 계수들을 변환한다. 예컨대, 변환 계수들은 양자화기 값에 의해 분할되고 절단(truncate)될 수 있다. 그 후, 양자화된 변환 계수들은 엔트로피 인코딩 스테이지(508)에 의해 엔트로피 인코딩된다. 그 후, 엔트로피-인코딩된 계수들은, 블록을 디코딩하는데 사용되는 다른 정보(예컨대 사용된 예측의 타입, 변환 타입, 모션 벡터들 및 양자화기 값을 포함할 수 있음)와 함께, 압축된 비트스트림(520)으로 출력된다. 압축된 비트스트림(520)은 가변 길이 코딩(VLC) 또는 산술 코딩과 같은 다양한 기법들을 사용하여 포맷팅될 수 있다. 압축된 비트스트림(520)은 또한, 인코딩된 비디오 스트림 또는 인코딩된 비디오 비트스트림으로 지칭될 수 있으며, 용어들은 본 명세서에서 상호교환가능하게 사용될 것이다.
[0039] (점선의 연결 라인들에 의해 도시된) 도 5의 재구성 경로는, 인코더(500) 및 디코더(600)(아래에서 설명됨) 둘 모두가 압축된 비트스트림(520)을 디코딩하기 위해 동일한 기준 프레임들을 사용한다는 것을 보장하기 위해 사용될 수 있다. 재구성 경로는, 파생(derivative) 잔차 블록(또한 파생 잔차로 지칭됨)을 생성하기 위해 역양자화 스테이지(510)에서 양자화된 변환 계수들을 역양자화하는 것 및 역변환 스테이지(512)에서 역양자화된 변환 계수들을 역변환하는 것을 포함하는, 아래에서 더 상세히 논의되는 디코딩 프로세스 동안 발생하는 기능들과 유사한 기능들을 수행한다. 재구성 스테이지(414)에서, 인트라/인터 예측 스테이지(502)에서 예측되었던 예측 블록은 재구성된 블록을 생성하기 위해 파생 잔차에 부가될 수 있다. 루프 필터링 스테이지(516)는 블로킹 아티팩트들과 같은 왜곡을 감소시키기 위해, 재구성된 블록에 적용될 수 있다.
[0040] 인코더(500)의 다른 변경들이 압축된 비트스트림(520)을 인코딩하기 위해 사용될 수 있다. 예컨대, 비-변환 기반 인코더는 특정한 블록들 또는 프레임들에 대한 변환 스테이지(504) 없이 잔차 신호를 직접 양자화할 수 있다. 다른 구현에서, 인코더는 단일 스테이지로 결합된 양자화 스테이지(506) 및 역양자화 스테이지(510)를 가질 수 있다.
[0041] 도 6은 다른 구현에 따른 디코더(600)의 블록 다이어그램이다. 디코더(600)는, 예컨대 메모리(304)에 저장된 컴퓨터 소프트웨어 프로그램을 제공함으로써 수신 스테이션(206)에서 구현될 수 있다. 컴퓨터 소프트웨어 프로그램은, CPU(302)와 같은 프로세서에 의해 실행될 경우 수신 스테이션(206)으로 하여금 도 6에 설명된 방식으로 비디오 데이터를 디코딩하게 하는 머신 명령들을 포함할 수 있다. 디코더(600)는 또한, 예컨대 송신 스테이션(202) 또는 수신 스테이션(206)에 포함된 하드웨어로서 구현될 수 있다.
[0042] 위에서 논의된 인코더(500)의 재구성 경로와 유사한 디코더(600)는 일 예에서, 압축된 비트스트림(520)으로부터 출력 비디오 스트림(616)을 생성하기 위해 다양한 기능들을 수행하기 위한 다음의 스테이지들, 즉 엔트로피 디코딩 스테이지(602), 역양자화 스테이지(604), 역변환 스테이지(606), 인트라/인터 예측 스테이지(608), 재구성 스테이지(610), 루프 필터링 스테이지(612) 및 디블록킹 필터링 스테이지(614)를 포함한다. 디코더(600)의 다른 구조적 변경들이 압축된 비트스트림(520)을 디코딩하기 위해 사용될 수 있다.
[0043] 압축된 비트스트림(520)이 디코딩을 위해 제시되는경우, 압축된 비트스트림(520) 내의 데이터 엘리먼트들은 양자화된 변환 계수들의 세트를 생성하도록 엔트로피 디코딩 스테이지(602)에 의해 디코딩될 수 있다. 역양자화 스테이지(604)는 (예컨대, 양자화된 변환 계수들을 양자화기 값과 곱함으로써) 양자화된 변환 계수들을 역양자화하고, 역변환 스테이지(606)는, 인코더(500)의 역변환 스테이지(512)에 의해 생성된 것과 동일할 수 있는 파생 잔차를 생성하기 위해, 역양자화된 변환 계수들을 역변환한다. 압축된 비트스트림(520)으로부터 디코딩된 헤더 정보를 사용하여, 디코더(600)는 인코더(500), 예컨대 인트라/인터 예측 스테이지(502)에서 생성되었던 것과 동일한 예측 블록을 생성하기 위해 인트라/인터 예측 스테이지(608)를 사용할 수 있다. 재구성 스테이지(610)에서, 예측 블록은 재구성된 블록을 생성하기 위해 파생 잔차에 부가될 수 있다. 루프 필터링 스테이지(612)는 블로킹 아티팩트들을 감소시키기 위해, 재구성된 블록에 적용될 수 있다. 다른 필터링이 재구성된 블록에 적용될 수 있다. 이러한 예에서, 디블록킹 필터링 스테이지(614)는 블록킹 왜곡을 감소시키기 위해, 재구성된 블록에 적용되며, 결과가 출력 비디오 스트림(616)으로서 출력된다. 출력 비디오 스트림(616)은 또한, 디코딩된 비디오 스트림으로 지칭될 수 있으며, 용어들은 본 명세서에서 상호교환가능하게 사용될 것이다. 디코더(600)의 다른 변경들이 압축된 비트스트림(520)을 디코딩하기 위해 사용될 수 있다. 예컨대, 디코더(600)는 디블록킹 필터링 스테이지(614) 없이 출력 비디오 스트림(616)을 생성할 수 있다.
[0044] 도 7 및 도 8은, 각각 단일-패스 및 2-패스 인코딩에서 일정한 타겟 비트레이트를 달성하기 위해 해상도 스케일링을 사용하기 위한 프로세스들(700 및 800)의 흐름도 다이어그램들이다. 프로세스들(700 및 800)은 비디오 스트림의 인코딩을 보조하기 위해 컴퓨팅 디바이스(300)와 같은 시스템에서 구현될 수 있다. 프로세스들(700 및 800)은, 예컨대, 송신 스테이션(202) 또는 수신 스테이션(206)과 같은 컴퓨팅 디바이스에 의해 실행되는 소프트웨어 프로그램으로서 구현될 수 있다. 소프트웨어 프로그램은, CPU(302)와 같은 프로세서에 의해 실행될 경우, 컴퓨팅 디바이스로 하여금 프로세스(700) 또는 프로세스(800) 중 하나를 수행하게 하는, 메모리(304)와 같은 메모리에 저장된 머신-판독가능 명령들을 포함할 수 있다. 프로세스들(700 및 800)은 또한, 전체적으로 또는 부분적으로 하드웨어를 사용하여 구현될 수 있다. 위에서 설명된 바와 같이, 몇몇 컴퓨팅 디바이스들은 다수의 메모리들 및 다수의 프로세서들을 가질 수 있으며, 프로세스들(700 및 800) 각각의 단계들 또는 동작들은 그러한 경우들에서, 상이한 프로세서들 및 메모리들을 사용하여 분산될 수 있다. 본 명세서에서 단수형의 용어들 "프로세서" 및 "메모리"의 사용은, 오직 하나의 프로세서 또는 하나의 메모리만을 갖는 컴퓨팅 디바이스들 뿐만 아니라 반드시 모든 언급된 단계들이 아니라 몇몇 단계들의 실행에서 각각 사용될 수 있는 다수의 프로세서들 또는 메모리들을 갖는 디바이스들을 포함한다.
[0045] 설명의 간략화를 위해, 각각의 프로세스(700 및 800)는 일련의 단계들 또는 동작들로서 도시 및 설명된다. 그러나, 본 개시내용에 따른 단계들 및 동작들은 다양한 순서들로 그리고/또는 동시에 발생할 수 있다. 부가적으로, 본 개시내용에 따른 단계들 또는 동작들은 본 명세서에 제시 및 설명되지 않은 다른 단계들 또는 동작들과 함께 발생할 수 있다. 또한, 예시된 모든 단계들 또는 동작들이 개시된 요지에 따라 방법을 구현하는데 요구되지는 않을 수 있다. 프로세스들(700 또는 800) 중 하나는 입력 신호의 각각의 프레임에 대해 반복될 수 있다.
[0046] 도 7을 참조하면, 비교적 일정한 타겟 비트레이트를 달성하기 위해 단일-패스 인코딩에서 해상도 스케일링을 사용하기 위한 프로세스(700)는 동작(702)에서, 타겟 비트레이트, 초기 QP, 최소 QP 임계치, 및 최대 QP 임계치에 대한 값들을 셋팅함으로써 개시된다. 이들 값들은, 비디오 스트림이 인코딩되고 있는 초기 해상도를 표시할 수 있다. 동작(704)에서, 인코더는 초기 QP를 사용하여 비디오 스트림의 제1 프레임을 인코딩한다. 제1 프레임을 인코딩하는 것이 타겟 비트레이트를 충족시키는 프레임 비트레이트를 초래하면, 동작(706)은 동작(704)으로 복귀함으로써 비디오 스트림의 다음의 프레임을 인코딩하기 위해 인코더를 준비한다. 그렇지 않으면, 프로세스(700)는 동작(708)의 트리거 조정 페이즈(phase)로 계속되며, 그 페이즈는 비디오 데이터에 진동이 존재하는지 여부를 결정하기 위해 필터링 로직을 사용한다. 어떠한 진동도 존재하지 않으면, 동작(708)은 동작(704)으로 복귀함으로써 비디오 스트림의 다음의 프레임을 인코딩하기 위해 인코더를 준비한다. 그렇지 않으면, 프로세스(700)는 동작(710)에서 개시된 조정 페이즈로 계속된다.
[0047] 동작(710)에서, 프레임 비트레이트가 타겟 비트레이트를 충족하지 않는 것이 오버슈트로 인한 것인지 또는 언더슈트로 인한 것인지가 결정된다. 프레임 비트레이트가 타겟 비트레이트를 초과하는 경우(오버슈트들), 예컨대, 비디오 스트림이 인코딩되는 해상도에 대해 QP가 너무 작기 때문에, 오버슈트가 발생한다. 프레임 비트레이트가 타겟 비트레이트 아래에 있는 경우(언더슈트들), 예컨대, 비디오 스트림이 인코딩되는 해상도에 대해 QP가 너무 높기 때문에, 언더슈트가 발생한다. 오버슈트가 결정되는지 또는 언더슈트가 결정되는지에 관계없이, 비디오 스트림의 하나 또는 그 초과의 인코딩 파라미터들은 비디오 스트림의 품질을 개선시키기 위해 이후에 조정될 것이다. 인코딩 파라미터들은, 조정될 경우 비디오 스트림의 품질 또는 시각적 표현들에 대한 영향을 갖는 임의의 값들을 포함할 수 있다. 일 구현에서, 인코딩 파라미터들은 QP, 비디오 해상도, 최대 QP 임계치, 및 최소 QP 임계치를 포함하지만 이에 제한되지는 않는다. 인코더에 의해 이후에 행해지는 조정들은, 비트레이트 이슈가 오버슈트로 인한 것인지 또는 언더슈트에 인한 것인지에 의존한다.
[0048] 동작(710)이 비트레이트 오버슈트가 존재한다고 결정하면, 프로세스(700)는 동작(712)으로 진행하며, 여기서, (동작(710)이 단지 1회 수행되었던 경우 동작(702)에서 셋팅된 초기 QP일 수 있는) QP에 대해 현재 셋팅된 값이 최대 QP 임계치에 대해 현재 셋팅된 값과 동일한지 여부가 결정된다. 그렇지 않다면, QP는 동작(714)에서 증가되며, 그 동작은 동작(704)으로 복귀함으로써, 증가된 QP를 사용하여 비디오 스트림의 다음의 프레임을 인코딩하기 위해 인코더를 준비한다. 그러나, QP의 값이 최대 QP 임계치에 대한 값과 동일하면, 그것이 비디오 스트림의 해상도에 대한 가장 높은 유효 값에 도달하므로, QP는 추가로 증가되지 않을 수 있다. 따라서, 동작(716)에서, 프로세스(700)는 비디오 스트림의 해상도를 감소시키며, 이는 최소 QP 임계치 및 최대 QP 임계치의 값들을 리셋(reset)하는 것을 포함한다. 동작(716)은 또한, 해상도의 감소에 기반하여 QP의 값을 감소시킨다. 그 후, 동작(716)은 동작(704)으로 복귀함으로써 새로운 해상도 및 QP, 최소 QP 임계치, 및 최대 QP 임계치 값들을 사용하여 다음의 프레임을 인코딩하기 위해 인코더를 준비한다.
[0049] 동작(710)이 대신 비트레이트 언더슈트가 존재한다고 결정하면, 프로세스(700)는 동작(718)으로 진행하며, 여기서, (동작(710)이 단지 1회 수행되었던 경우 동작(702)에서 셋팅된 초기 QP일 수 있는) QP에 대해 현재 셋팅된 값이 최소 QP 임계치에 대해 현재 셋팅된 값과 동일한지 여부가 결정된다. 그렇지 않다면, QP는 동작(720)에서 감소되며, 그 동작은 동작(704)으로 복귀함으로써, 감소된 QP를 사용하여 비디오 스트림의 다음의 프레임을 인코딩하기 위해 인코더를 준비한다. 그러나, QP의 값이 최소 QP 임계치에 대한 값과 동일하면, 그것이 비디오 스트림의 해상도에 대한 가장 낮은 유효 값에 도달하므로, QP는 추가로 감소되지 않을 수 있다. 따라서, 동작(722)에서, 프로세스(700)는 비디오 스트림의 해상도를 증가시키며, 이는 최소 QP 임계치 및 최대 QP 임계치의 값들을 리셋하는 것을 포함한다. 동작(722)은 또한, 해상도의 증가에 기반하여 QP의 값을 증가시킨다. 그 후, 동작(722)은 동작(704)으로 복귀함으로써 새로운 해상도 및 QP, 최소 QP 임계치, 및 최대 QP 임계치 값들을 사용하여 다음의 프레임을 인코딩하기 위해 인코더를 준비한다.
[0050] 더 높은 해상도 소스가 이용가능하다고 가정하면, 다른 옵션은, 인코딩 비트레이트가 타겟 비트레이트를 일관되게 언더슈트하거나 또는 특정한 임계 횟수들을 초과하여 타겟 비트레이트를 언더슈트하는 경우 비디오 해상도를 증가시키는 것이다. 예컨대, 사용자가 360p 해상도로 비디오를 뷰잉하기로 선택하지만, 자신의 대역폭이 더 높은 해상도로 뷰잉하는 것을 허용하는 경우, 비디오 해상도는, 사용자가 자신의 연결을 통해 비디오를 스트리밍할 수 있는 최대 해상도로 증가될 수 있다.
[0051] 2-패스 인코딩에서, 비디오 스트림의 프레임들을 인코딩하기 위한 제1 패스는, 예컨대, 비디오 스트림의 제1 프레임에 대응하는 입력 프레임을 인코딩함으로써 생성된 비트들의 수를 검출함으로써, 일정한 양자화 파라미터에 기반하여 어떤 프레임들이 인코딩하기에 너무 어려울 수 있는지 또는 너무 용이할 수 있는지를 결정하는 것을 포함한다. 입력 프레임이 너무 어렵거나 또는 너무 용이하다는 것을 생성된 수의 비트들이 표시하면, 인코더는, 제2 패스가 대응하는 프레임을 인코딩할 시에 비디오 스트림의 해상도를 조정할 수 있다. 이러한 방식으로, 2-패스 인코딩은, 제1 패스 동안 언더슈팅 및 오버슈팅의 잠재적인 인스턴스들을 식별하고 제2 패스 상에서 비디오 스트림을 효율적으로 인코딩하는데 필요한 조정들을 행함으로써, 대부분의 언더슈팅 및 오버슈팅을 방지할 수 있다. 언더슈트 또는 오버슈트의 양은, 해상도가 치수 당 조정될 필요가 있는 정도를 표시할 수 있다.
[0052] 이제 도 8을 참조하면, 비교적 일정한 타겟 비트레이트를 달성하기 위해 2-패스 인코딩에서 해상도 스케일링을 사용하기 위한 프로세스(800)는 타겟 비트레이트 및 QP에 대한 초기 값들을 셋팅함으로써 동작(802)에서 개시된다. 동작(804)에서, 입력 프레임은 셋팅된 타겟 비트레이트 및 QP 값들을 사용하여 수신 및 인코딩된다. 입력 프레임을 인코딩하는 것에 대한 응답으로, 동작(806)에서 다수의 비트들이 생성된다. 비트들의 수는 입력 프레임이 인코딩되는 비트레이트를 표시한다. 생성된 비트들의 사이즈에 의존하여, 프로세스(800)는 비디오 스트림의 인코딩 파라미터들, 이를테면 비디오 해상도를 조정하기 위한 조정 페이즈로 진행할 수 있다. 일 구현에서, 조정 페이즈로 진행할지 여부에 대한 결정은, QP를 변경시키는 것이 바람직한 비디오 품질(예컨대, 해상도에 대한 가시적인 코딩 아티팩트들이 없는 비디오 스트리밍)을 초래하는 특정된 범위 외부에 프레임 비트레이트가 있는지 여부에 기반하여 행해질 수 있다. 예컨대, 프레임 비트레이트가 타겟 비트레이트의 100 내지 200kbps 내에 있다면, 동작(808)은 조정 페이즈로 진행하지 않기로 결정할 수 있다. 어떠한 조정들도 행해지지 않을 경우, 프로세스(800)는 동작(816)으로 진행하며, 여기서, 인코딩된 프레임은 이전에 셋팅된 QP 값에 기반하여 생성되고, 그 후, 그 인코딩된 프레임은 동작(818)에서 출력 비디오 스트림의 일부로서 송신된다. 일 구현에서, 동작(808)에서의 결정은 플래그(flag)를 사용하여 코딩될 수 있다.
[0053] 비디오 해상도에 대한 조정이 행해질 필요가 있다고 동작(808)에서 결정되면, 프로세스(800)는 동작(810)으로 진행하며, 그 동작은, 조정에 대한 필요성이 타겟 비트레이트를 언더슈팅하는 입력 프레임 인코딩 비트레이트로 인한 것인지 또는 타겟 비트레이트를 오버슈팅하는 입력 프레임 인코딩 비트레이트로 인한 것인지를 결정한다. 오버슈트의 경우, 예컨대, 비디오 스트림의 해상도를 감소시킴으로써 하나 또는 그 초과의 인코딩 파라미터들이 동작(812)에서 조정된다. 언더슈트의 경우, 예컨대, 비디오 스트림의 해상도를 증가시킴으로써 하나 또는 그 초과의 인코딩 파라미터들이 동작(814)에서 조정된다.
[0054] 일 구현에서, 비디오 해상도에 대한 조정은, 퍼센트 비트레이트 편차의 가중된 역의 제곱근, 이를테면
Figure 112018037168570-pct00001
Figure 112018037168570-pct00002
을 사용하여 결정될 수 있으며, 여기서, Snew는 해상도의 새로운 스케일링 치수-당 비율을 표현하고, α는 가중 파라미터를 표현하며, 그리고 Bdev는 비트레이트 범위로부터의 편차를 표현한다. 예컨대, 입력 프레임을 인코딩하는 것이 20퍼센트 미만의 오버슈트를 초래하고 가중 파라미터가 1로 셋팅되는 경우, 1280×720의 해상도를 갖는 비디오 스트림의 입력 프레임은
Figure 112018037168570-pct00003
에 의해 스케일링될 수 있으며, 그에 의해, 1168×657의 새로운 스트리밍 해상도를 초래한다. 유사하게, 입력 프레임을 인코딩하는 것이 50퍼센트의 심각한 언더슈트를 초래하는 경우, 스케일링 비율은
Figure 112018037168570-pct00004
Figure 112018037168570-pct00005
가 될 수 있다. 이러한 방식으로, 비디오 스트림 해상도는, 그것이 1810×1018로 인코딩되도록 조정될 수 있다. 가중 파라미터 α를 1초과로 조정하는 것은, 수용가능한 범위에 대한 중간값(예컨대, 100 내지 200kbps의 범위에 대해 150kbps)에 더 가깝게 인코딩된 새로운 프레임 비트레이트를 초래할 수 있다.
[0055] 비디오 해상도에 대한 조정이 행해진 이후, 프로세스(800)는 동작(816)으로 진행하며, 여기서, 입력 프레임에 대응하는 인코딩된 프레임이 비디오 스트림의 제2 패스의 일부로서 인코딩된다. 그 후, 인코딩된 프레임은 동작(818)에서 출력 비디오 스트림의 일부로서 송신된다.
[0056] 해상도 스케일링은 위에서 설명된 이점들 이상의 추가적인 이점들을 제공할 수 있다. 예컨대, 해상도 스케일링은 설정된 모션 탐색 윈도우 영역에 대한 인터 예측을 위한 수용가능한 모션 벡터를 발견하지 못했던 인코더들에 대한 성능을 개선시킬 수 있다. 이것은 통상적으로 인트라 예측의 과사용으로 인한 불량한 압축을 초래한다. 그러한 상황에서 비디오 스트림을 다운스케일링함으로써, 인코딩할 더 적은 픽셀들이 존재하기 때문에 비트레이트가 감소되며, 비디오 스트림 내의 절대적인 모션의 양이 또한 감소된다. 이것은 탐색 윈도우의 이용도를 개선시킬 수 있다.
[0057] 일 구현에서 그리고 동작(810)에서 언더슈트를 결정하는 것에 대한 응답으로, 동작(814)은 모션 탐색 영역의 사이즈를 감소시키는 것을 포함하며, 이는 또한 비디오 해상도를 감소시키는 것 대신 또는 그에 부가하여 행해질 수 있다. 유사하게, 동작(810)에서 오버슈트를 결정하는 것에 대한 응답으로, 동작(812)은 비디오 해상도를 증가시키는 것 대신 또는 그에 부가하여 모션 탐색 영역의 사이즈를 증가시키는 것을 포함한다. 일 구현에서, 모션 탐색 영역의 사이즈에 대한 변경들은 입력 프레임의 특정한 컬러 컴포넌트들, 예컨대 그의 휘도 및/또는 크로미넌스 픽셀 값들에 대해서만 행해진다.
[0058] 일 구현에서, 모션 탐색 영역에 대한 하나 또는 그 초과의 인코더 제한들은, 예컨대, 동작(804)에서 입력 프레임을 인코딩하는 것에 대한 응답으로 식별될 수 있다. 인코더 제한들은, 인코더(500)에 의해 발견된 모션 벡터가 임계치 값을 초과하는, 예컨대, 주어진 해상도로 고속의 동영상 장면들을 적절히 표현하기 위한 인코더(500)의 능력을 초과하는 모션의 양을 포함하는 그 고속의 동영상 장면들을 비디오 스트림이 포함하는 인스턴스들을 표시할 수 있다. 일 구현에서, 비디오 스트림의 해상도는, 모션 벡터가 임계치 값을 초과한다는 것을 표시하는 인코더 제한들에 대한 응답으로 감소될 수 있다.
[0059] 일 구현에서, 모션 탐색 영역의 사이즈는 변화에 영향을 받지 않는다. 예컨대, 인코더(500)가 하드웨어 인코더로 구현되는 경우, 모션 탐색 영역은 정적으로 N×M의 사이즈로 셋팅될 수 있으며, 여기서, N 및 M은 동일하거나 상이한 값들일 수 있다. 따라서, 비디오 스트림의 해상도가 N×M보다 더 높으면, 모션 탐색 영역은 입력 프레임의 일부만을 커버할 수 있다. 예컨대, 커버될 입력 프레임의 초기 부분의 초기 기준 위치에 대해 모션 탐색 영역의 중간점 위치(예컨대, 코딩될 현재의 블록 또는 슬라이스의 중간점 위치)가 정의될 수 있다. 그러나, 일 구현에서, 비디오 스트림의 해상도는, 예컨대, 모션 탐색 영역으로 하여금 입력 프레임의 더 큰 부분을 커버하게 함으로써 모션 탐색 영역 내의 모션을 검출하기 위한 인코더(500)의 능력을 개선시키도록 감소될 수 있다. (예컨대, 동작(808)에서 인코딩 파라미터들을 조정할지 여부를 결정하는 것의 일부로서) 이러한 방식으로 해상도를 감소시키려는 결정은, 예컨대, 위에서 논의된 바와 같이 모션 탐색 영역에 대한 임계치 값 또는 다른 인코더 제한에 기반하여 행해질 수 있다. 해상도를 감소시키는 것은 모션 탐색 영역의 중간점 위치로 하여금, 모션 탐색 영역에 의해 결과적으로 커버되는 입력 프레임의 일부의 기준 위치에 기반하여 리셋되게 한다. 유사하게, 일 구현에서, 비디오 스트림의 해상도는 임계치 값 또는 다른 인코더 제한에 기반하여 증가될 수 있다. 예컨대, 해상도가 모션 탐색 영역의 사이즈보다 작은 경우(예컨대, 모션 탐색 영역이 전체 입력 프레임을 초과하여 커버할 경우), 인코더(500)는 모션 탐색 영역의 사이즈와 동일하도록 비디오 스트림의 해상도를 증가시킬 수 있다. 따라서, 모션 탐색 영역의 중간점 위치는 적용가능한 바와 같이, 입력 프레임의 기준 위치에 있거나 또는 그 위치에서 유지될 것이다. 본 명세서에서 사용되는 바와 같이, 용어 "중간점"은 대응하는 치수들에 대한 중심 포지션을 지칭한다.
[0060] 모션 탐색 영역에 대한 하나 또는 그 초과의 인코더 제한들이 도 8의 2-패스 인코딩에 대해 본 명세서에서 논의되지만, 그 제한들은 또한, 도 7에 대해 논의된 것과 같은 단일-패스 인코딩 맥락의 애플리케이션을 갖는다. 예컨대, 비디오 스트림의 제1 프레임의 인코딩 파라미터들을 조정하는 것은, (예컨대, 동작(708)에서 트리거 조정을 결정하는 것의 일부로서) 모션 탐색 영역에 대한 인코더 제한들을 식별하는 것, 및 인코더 제한들에 기반하여 비디오 스트림의 해상도를 감소(또는 증가)시키는 것을 포함할 수 있다. 일 구현에서, 이러한 방식으로 해상도를 변경시키는 것은, 모션 탐색 영역의 중간점 위치가 모션 탐색 영역에 의해 결과적으로 커버되는 제1 프레임의 일부의 기준 위치에 대해 리셋되는 것을 초래한다.
[0061] 인코더(500)가 하드웨어 인코더인 다른 구현에서, 모션 탐색의 파라미터들은, 모션 탐색 영역의 중간점 위치가 인코딩되는 프레임의 블록에 따라 변한다는 것을 제외하고 블록마다 그리고 프레임마다 동일하게 유지된다. 따라서, 해상도가 변경되는 경우, 더 많거나 더 적은 모션이 해상도의 변화에 의해 캡쳐될 수 있다. 예컨대, 더 낮은 해상도가 동일한 탐색 영역 내의 더 많은 움직임을 캡쳐할 때 고속의 모션이 존재할 경우, 해상도를 변경시키는 것은 프레임 내의 특정한 블록들에 대한 더 양호한 매치를 제공하고 그에 따라 잔차들을 낮출 수 있다.
[0062] 프로세스들(700 및 800)의 초기 동작들에서 셋팅된 타겟 비트레이트는 변동에 영향을 받는 가변 비트레이트일 수 있다. 이러한 변동은, 비디오를 스트리밍하는 사용자에 대한 연결 속도 또는 네트워크 연결 타입의 변화로부터 초래될 수 있다. 예컨대, 이용가능하지 않게 되는 WiFi 연결을 통해 사용자가 초기에 비디오를 스트리밍하는 경우, 비디오 스트리밍은 LTE 연결로 스위칭될 수 있다. 각각의 네트워크 연결 타입이 주어진 해상도로 주어진 비디오 스트림을 최적으로 뷰잉하기 위한 그 자신의 타겟 비트레이트를 표시할 수 있다는 점에서, 가변 타겟 비트레이트들에 대해 단일-패스 인코딩 및 2-패스 인코딩에 대한 개시된 레이트 제어 프로세스들의 구현들을 이용하는 것이 바람직할 수 있다.
[0063] 위에서 설명된 인코딩 및 디코딩의 양상들은 인코딩 및 디코딩 기법들의 몇몇 예들을 예시한다. 그러나, 인코딩 및 디코딩이 청구항들에서 사용되는 바와 같이, 그 인코딩 및 디코딩이 데이터의 압축, 압축해제, 변환, 또는 임의의 다른 프로세싱 또는 변화를 의미할 수 있다는 것이 이해될 것이다.
[0064] 단어 "예시적인"은 예, 예시, 또는 예증으로서 기능하는 것을 의미하도록 본 명세서에서 사용된다. "예시적인" 것으로서 본 명세서에 설명된 임의의 양상 또는 설계는 다른 양상들 또는 설계들에 비해 반드시 바람직하거나 유리한 것으로서 해석될 필요는 없다. 오히려, 단어 "예시적인"의 사용은 구체적인 방식으로 개념들을 제시하도록 의도된다. 본 출원에서 사용된 바와 같이, 용어 "또는"은 배타적인 "또는" 보다는 포괄적인 "또는"을 의미하도록 의도된다. 즉, 달리 명시되거나 문맥상 명확하지 않으면, "X는 A 또는 B를 포함한다"는 본래의 포괄적인 치환들 중 임의의 치환을 의미하도록 의도된다. 즉, X는 A를 포함하거나; X는 B를 포함하거나; 또는 X는 A 및 B 둘 모두를 포함한다면, "X는 A 또는 B"를 포함한다"는 전술한 예시들 중 임의의 예시 하에서 충족된다. 부가적으로, 본 출원 및 첨부된 청구항들에서 사용된 바와 같은 단수 표현들은 달리 명시되지 않거나 단수 형태로 지시되는 것으로 문맥상 명확하지 않으면, "하나 또는 그 초과"를 의미하도록 일반적으로 해석되어야 한다. 또한, 용어 "일 구현" 또는 "하나의 구현"의 전반에 걸친 사용은, 동일한 실시예 또는 구현으로서 설명되지 않으면, 동일한 실시예 또는 구현을 의미하도록 의도되지 않는다.
[0065] 송신 스테이션(202) 및/또는 수신 스테이션(206)(및 이들 상에 저장된 그리고/또는 (인코더(400) 및 디코더(500)에 의한 것을 포함하여) 이들에 의해 실행되는 알고리즘들, 방법들, 명령들 등)의 구현들은 하드웨어, 소프트웨어, 또는 이들의 임의의 결합으로 실현될 수 있다. 하드웨어는, 예컨대, 컴퓨터들, 지적 재산(IP) 코어들, 주문형 집적 회로(ASIC)들, 프로그래밍가능 로직 어레이들, 광학 프로세서들, 프로그래밍가능 로직 제어기들, 마이크로코드, 마이크로제어기들, 서버들, 마이크로프로세서들, 디지털 신호 프로세서들 또는 임의의 다른 적합한 회로를 포함할 수 있다. 청구항들에서, 용어 "프로세서"는 전술한 하드웨어 중 임의의 하드웨어를 단일로 또는 결합으로 포함하는 것으로 이해되어야 한다. 용어들 "신호" 및 "데이터"는 상호교환가능하게 사용된다. 추가로, 송신 스테이션(202) 및 수신 스테이션(206)의 일부들은 반드시 동일한 방식으로 구현될 필요는 없다.
[0066] 추가로, 일 양상에서, 예컨대, 송신 스테이션(202) 또는 수신 스테이션(206)은 실행될 경우, 본 명세서에 설명된 각각의 방법들, 알고리즘들 및/또는 명령들 중 임의의 것을 수행하는 컴퓨터 프로그램으로 범용 컴퓨터 또는 범용 프로세서를 사용하여 구현될 수 있다. 부가적으로 또는 대안적으로, 예컨대, 본 명세서에 설명된 방법들, 알고리즘들, 또는 명령들 중 임의의 것을 수행하기 위한 다른 하드웨어를 포함할 수 있는 특수 목적 컴퓨터/프로세서가 이용될 수 있다.
[0067] 송신 스테이션(202) 및 수신 스테이션(206)은, 예컨대, 비디오 회의 시스템의 컴퓨터들 상에서 구현될 수 있다. 대안적으로, 송신 스테이션(202)은 서버 상에서 구현될 수 있고, 수신 스테이션(206)은 서버와는 별개의 디바이스, 이를테면 핸드-헬드 통신 디바이스 상에서 구현될 수 있다. 이러한 예시에서, 송신 스테이션(202)은 인코더(500)를 사용하여 콘텐츠를 인코딩된 비디오 신호로 인코딩하고, 인코딩된 비디오 신호를 통신 디바이스에 송신할 수 있다. 차례로, 그 후, 통신 디바이스는 인코딩된 비디오 신호를 디코더(600)를 사용하여 디코딩할 수 있다. 대안적으로, 통신 디바이스는 통신 디바이스 상에 로컬적으로 저장된 콘텐츠, 예컨대, 송신 스테이션(202)에 의해 송신되지 않았던 콘텐츠를 디코딩할 수 있다. 다른 적합한 송신 및 수신 구현 방식들이 이용가능하다. 예컨대, 수신 스테이션(206)은 휴대용 통신 디바이스보다는 일반적으로 정지형 개인용 컴퓨터일 수 있고 그리고/또는 인코더(500)를 포함하는 디바이스는 또한 디코더(600)를 포함할 수 있다.
[0068] 추가로, 본 발명의 구현들 중 전부 또는 일부는, 예컨대 유형의 컴퓨터-사용가능 또는 컴퓨터-판독가능 매체로부터 액세스가능한 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 컴퓨터-사용가능 또는 컴퓨터-판독가능 매체는, 예컨대, 임의의 프로세서에 의해 또는 그와 관련하여 사용을 위한 프로그램을 유형으로 포함, 저장, 통신, 또는 전달할 수 있는 임의의 디바이스일 수 있다. 매체는, 예컨대, 전자, 자기, 광학, 전자기, 또는 반도체 디바이스일 수 있다. 다른 적합한 매체들이 또한 이용가능하다.
[0069] 위에서-설명된 실시예들, 구현들 및 양상들은 본 발명의 용이한 이해를 허용하기 위해 설명되었으며, 본 발명을 제한하지 않는다. 대조적으로, 본 발명은 첨부된 청구항의 범위 내에 포함되는 다양한 변형들 및 동등한 어레인지먼트들을 커버하도록 의도되며, 그 범위는 그러한 모든 변형들 및 법률 하에서 허용되는 것과 동등한 구조를 포함하도록 가장 넓은 해석에 부합할 것이다.

Claims (22)

  1. 비디오 스트림의 제1 프레임을 식별하고;
    양자화 파라미터를 표현하는 제1 비트레이트로 상기 제1 프레임을 인코딩하고;
    상기 제1 프레임에 대한 타겟 비트레이트와 상기 제1 비트레이트를 비교하고 그리고 최소 양자화 임계치 또는 최대 양자화 임계치 중 하나와 상기 양자화 파라미터를 비교하고 ― 상기 최소 양자화 임계치 및 상기 최대 양자화 임계치는 상기 비디오 스트림의 해상도에 대응하고, 상기 제1 비트레이트가 상기 타겟 비트레이트보다 작은 경우 상기 최소 양자화 임계치가 사용되고, 상기 제1 비트레이트가 상기 타겟 비트레이트보다 큰 경우 상기 최대 양자화 임계치가 사용됨 ―;
    상기 타겟 비트레이트와 상기 제1 비트레이트를 비교하는 것 및 상기 최소 양자화 임계치 또는 상기 최대 양자화 임계치 중 하나와 상기 양자화 파라미터를 비교하는 것에 대한 응답으로 적어도 하나의 인코딩 파라미터를 조정하고;
    상기 비디오 스트림의 제2 프레임을 식별하고;
    상기 조정된 적어도 하나의 인코딩 파라미터에 따라 제2 비트레이트로 상기 제2 프레임을 인코딩하고; 그리고
    상기 인코딩된 제1 프레임 및 상기 인코딩된 제2 프레임을 출력 비트스트림에서 송신하기 위해
    비-일시적 저장 매체에 저장된 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고,
    상기 제1 비트레이트가 상기 타겟 비트레이트보다 작고 그리고 상기 양자화 파라미터가 상기 최소 양자화 임계치보다 작거나 또는 그와 동일한 경우, 상기 적어도 하나의 인코딩 파라미터를 조정하는 것은:
    상기 비디오 스트림의 해상도를 증가시키는 것;
    상기 양자화 파라미터를 증가시키는 것; 및
    상기 증가된 해상도에 기초하여 상기 최소 양자화 임계치 및 상기 최대 양자화 임계치를 조정하는 것
    을 포함하고, 그리고
    상기 제1 비트레이트가 상기 타겟 비트레이트보다 크고 그리고 상기 양자화 파라미터가 상기 최대 양자화 임계치보다 크거나 또는 그와 동일한 경우, 상기 적어도 하나의 인코딩 파라미터를 조정하는 것은:
    상기 비디오 스트림의 해상도를 감소시키는 것;
    상기 양자화 파라미터를 감소시키는 것; 및
    상기 감소된 해상도에 기초하여 상기 최소 양자화 임계치 및 상기 최대 양자화 임계치를 조정하는 것
    을 포함하는, 장치.
  2. 제1항에 있어서,
    상기 제1 비트레이트가 상기 타겟 비트레이트보다 작고 그리고 상기 양자화 파라미터가 상기 최소 양자화 임계치보다 크면, 상기 적어도 하나의 인코딩 파라미터를 조정하는 것은:
    상기 양자화 파라미터를 감소시키는 것
    을 포함하는, 장치.
  3. 제1항에 있어서,
    상기 제1 비트레이트가 상기 타겟 비트레이트보다 크고 그리고 상기 양자화 파라미터가 상기 최대 양자화 임계치보다 작으면, 상기 적어도 하나의 인코딩 파라미터를 조정하는 것은:
    상기 양자화 파라미터를 증가시키는 것
    을 포함하는, 장치.
  4. 제1항에 있어서,
    상기 명령들은 상기 제1 프레임을 인코딩하는 것에 대한 응답으로 모션 탐색 영역에 대한 하나 이상의 인코더 제한들을 식별하기 위한 명령들을 더 포함하고,
    상기 적어도 하나의 인코딩 파라미터를 조정하는 것은:
    상기 하나 이상의 인코더 제한들에 기초하여 상기 비디오 스트림의 해상도를 감소시키는 것;
    상기 감소된 해상도에서 상기 제1 프레임의 기준 위치를 결정하는 것; 및
    상기 제1 프레임의 상기 기준 위치에 기초하여 상기 모션 탐색 영역의 중간점(midpoint) 위치를 리셋(reset)하는 것
    을 포함하는, 장치.
  5. 제1항에 있어서,
    상기 적어도 하나의 인코딩 파라미터는 상기 비디오 스트림의 해상도, 상기 양자화 파라미터, 상기 최소 양자화 임계치, 또는 상기 최대 양자화 임계치 중 적어도 하나를 포함하는, 장치.
  6. 비디오 스트림의 입력 프레임을 식별하고;
    입력 양자화 파라미터를 사용하여 상기 입력 프레임을 인코딩하고;
    상기 인코딩된 입력 프레임의 모션 탐색 영역에 대한 하나 이상의 인코더 제한들을 식별하고;
    상기 하나 이상의 인코더 제한들에 기초하여 상기 비디오 스트림의 해상도를 조정하고;
    상기 조정된 해상도에서 상기 입력 프레임의 기준 위치를 결정하고;
    상기 입력 프레임의 상기 기준 위치에 기초하여 상기 모션 탐색 영역의 중간점 위치를 리셋하고;
    상기 조정된 해상도 또는 상기 리셋된 중간점 위치 중 적어도 하나에 따라 상기 입력 프레임을 인코딩함으로써 인코딩된 프레임을 생성하고; 그리고
    상기 인코딩된 프레임을 출력 비트스트림에서 송신하기 위해
    비-일시적 저장 매체에 저장된 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하는, 장치.
  7. 제6항에 있어서,
    상기 하나 이상의 인코더 제한들에 기초하여 상기 비디오 스트림의 해상도를 조정하는 것은:
    상기 하나 이상의 인코더 제한들에 기초하여 상기 비디오 스트림의 해상도를 증가시키는 것
    을 포함하는, 장치.
  8. 제6항에 있어서,
    상기 하나 이상의 인코더 제한들에 기초하여 상기 비디오 스트림의 해상도를 조정하는 것은:
    상기 하나 이상의 인코더 제한들에 기초하여 상기 비디오 스트림의 해상도를 감소시키는 것
    을 포함하는, 장치.
  9. 제6항에 있어서,
    상기 조정된 해상도에서 상기 인코딩된 프레임을 생성하기 위해 사용되는 인코딩 양자화 파라미터 또는 상기 입력 양자화 파라미터 중 적어도 하나는 상기 하나 이상의 인코더 제한들에 기초하여 또한 조정되는, 장치.
  10. 제6항에 있어서,
    상기 입력 양자화 파라미터는 상수인, 장치.
  11. 비디오 스트림의 입력 프레임을 식별하고;
    일정한(constant) 양자화 파라미터를 표현하는 제1 비트레이트로 상기 입력 프레임을 인코딩하고;
    상기 입력 프레임에 대한 최소 타겟 비트레이트 및 최대 타겟 비트레이트와 상기 제1 비트레이트를 비교하고;
    상기 최소 타겟 비트레이트 및 상기 최대 타겟 비트레이트와 상기 제1 비트레이트를 비교하는 것에 대한 응답으로, 상기 입력 프레임의 모션 탐색 영역에 대한 하나 이상의 인코더 제한들을 식별하고;
    상기 하나 이상의 인코더 제한들에 기초하여 상기 비디오 스트림의 해상도를 조정하고;
    상기 조정된 해상도에서 상기 입력 프레임의 기준 위치를 결정하고;
    상기 입력 프레임의 상기 기준 위치에 기초하여 상기 모션 탐색 영역의 중간점 위치를 리셋하고;
    상기 조정된 해상도 또는 상기 리셋된 중간점 위치 중 적어도 하나에 따라 상기 입력 프레임을 인코딩함으로써 인코딩된 프레임을 생성하고; 그리고
    상기 인코딩된 프레임을 출력 비트스트림에서 송신하기 위해
    비-일시적 저장 매체에 저장된 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하는, 장치.
  12. 제11항에 있어서,
    상기 제1 비트레이트가 상기 최소 타겟 비트레이트보다 작으면, 상기 비디오 스트림의 해상도를 조정하는 것은 상기 비디오 스트림의 해상도를 증가시키는 것을 포함하고 그리고 상기 인코딩된 프레임을 생성하는 것은 상기 증가된 해상도에서 상기 입력 프레임을 인코딩하는 것을 포함하는, 장치.
  13. 제11항에 있어서,
    상기 제1 비트레이트가 상기 최대 타겟 비트레이트보다 크면, 상기 비디오 스트림의 해상도를 조정하는 것은 상기 비디오 스트림의 해상도를 감소시키는 것을 포함하고 그리고 상기 인코딩된 프레임을 생성하는 것은 상기 감소된 해상도에서 상기 입력 프레임을 인코딩하는 것을 포함하는, 장치.
  14. 제11항에 있어서,
    상기 하나 이상의 인코더 제한들에 기초하여 상기 비디오 스트림의 해상도를 조정하는 것은:
    상기 하나 이상의 인코더 제한들에 기초하여 상기 비디오 스트림의 해상도를 증가시키는 것
    을 포함하는, 장치.
  15. 제11항에 있어서,
    상기 하나 이상의 인코더 제한들에 기초하여 상기 비디오 스트림의 해상도를 조정하는 것은:
    상기 하나 이상의 인코더 제한들에 기초하여 상기 비디오 스트림의 해상도를 감소시키는 것
    을 포함하는, 장치.
  16. 제11항에 있어서,
    상기 하나 이상의 인코더 제한들에 기초하여 상기 비디오 스트림의 해상도를 조정하는 것은 상기 하나 이상의 인코더 제한들에 기초하여 상기 비디오 스트림의 적어도 하나의 인코딩 파라미터를 조정하는 것을 포함하고, 상기 적어도 하나의 인코딩 파라미터는 상기 일정한 양자화 파라미터, 상기 최소 타겟 비트레이트, 상기 최대 타겟 비트레이트, 인코딩 양자화 파라미터, 또는 상기 비디오 스트림의 해상도 중 적어도 하나를 포함하는, 장치.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
KR1020187010575A 2016-01-19 2016-12-22 동적 해상도 스위칭을 사용하는 실시간 비디오 인코더 레이트 제어 KR102118573B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/000,097 US10356406B2 (en) 2016-01-19 2016-01-19 Real-time video encoder rate control using dynamic resolution switching
US15/000,097 2016-01-19
PCT/US2016/068216 WO2017127213A1 (en) 2016-01-19 2016-12-22 Real-time video encoder rate control using dynamic resolution switching

Publications (2)

Publication Number Publication Date
KR20180054717A KR20180054717A (ko) 2018-05-24
KR102118573B1 true KR102118573B1 (ko) 2020-06-03

Family

ID=57822055

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187010575A KR102118573B1 (ko) 2016-01-19 2016-12-22 동적 해상도 스위칭을 사용하는 실시간 비디오 인코더 레이트 제어

Country Status (9)

Country Link
US (1) US10356406B2 (ko)
JP (1) JP6714695B2 (ko)
KR (1) KR102118573B1 (ko)
CN (1) CN107040781B (ko)
AU (1) AU2016388357B2 (ko)
CA (1) CA3001672C (ko)
DE (2) DE202016008214U1 (ko)
GB (1) GB2546887B (ko)
WO (1) WO2017127213A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3641273B1 (en) * 2016-02-26 2023-11-01 Livestreaming Sweden AB Edge node control
US10162936B2 (en) * 2016-03-10 2018-12-25 Ricoh Company, Ltd. Secure real-time healthcare information streaming
US10362307B2 (en) * 2016-09-09 2019-07-23 Hanwha Techwin Co., Ltd. Quantization parameter determination method and image capture apparatus
DE112018002112T5 (de) 2017-04-21 2020-01-16 Zenimax Media Inc. Systeme und verfahren zum rendern & vorkodierte lastschätz-basierte codierer-ansprech-bezogene anwendungen
KR102315524B1 (ko) * 2017-06-16 2021-10-21 한화테크윈 주식회사 영상의 비트레이트 조절 방법 및 영상 획득 장치
CN109151481B (zh) * 2017-06-28 2022-03-15 腾讯科技(深圳)有限公司 图片的传输和接收的方法、装置、系统、设备和介质
CN109151470B (zh) * 2017-06-28 2021-03-16 腾讯科技(深圳)有限公司 编码分辨率控制方法及终端
US11146608B2 (en) 2017-07-20 2021-10-12 Disney Enterprises, Inc. Frame-accurate video seeking via web browsers
US10412410B2 (en) * 2017-08-14 2019-09-10 Google Llc Compound motion-compensated prediction
CN109413427B (zh) * 2017-08-17 2022-04-08 腾讯科技(深圳)有限公司 一种视频帧编码方法及终端
US11539908B2 (en) * 2017-09-29 2022-12-27 Advanced Micro Devices, Inc. Adjustable modulation coding scheme to increase video stream robustness
CN109819263B (zh) 2017-11-22 2022-08-19 腾讯科技(深圳)有限公司 视频编码方法、装置、计算机设备及存储介质
US10659514B2 (en) 2018-03-28 2020-05-19 Arlo Technologies, Inc. System for video monitoring with adaptive bitrate to sustain image quality
WO2019191983A1 (zh) * 2018-04-04 2019-10-10 深圳市大疆创新科技有限公司 编码方法、装置、图像处理系统和计算机可读存储介质
CN108391127B (zh) * 2018-04-27 2021-08-10 腾讯科技(深圳)有限公司 视频编码方法、装置、存储介质及设备
CN108769681B (zh) * 2018-06-20 2022-06-10 腾讯科技(深圳)有限公司 视频编码、解码方法、装置、计算机设备和存储介质
CN108924553B (zh) * 2018-06-20 2021-10-08 腾讯科技(深圳)有限公司 视频编码、解码方法、装置、计算机设备和存储介质
US10554975B1 (en) 2018-09-30 2020-02-04 Tencent America LLC Method and apparatus for video coding
KR102411644B1 (ko) * 2018-11-26 2022-06-22 구글 엘엘씨 안전 및 크로스 디바이스에 일관된 비디오 압축
CN110572654B (zh) * 2019-09-27 2024-03-15 腾讯科技(深圳)有限公司 视频编码、解码方法和装置、存储介质及电子装置
CN113038136B (zh) * 2019-12-25 2022-10-11 成都鼎桥通信技术有限公司 一种视频自适应调整方法和装置
FR3105904B1 (fr) 2019-12-26 2023-03-10 Thales Sa Procédé d'allocation pour liaison bas-débit
CN111601109A (zh) * 2020-05-13 2020-08-28 西安万像电子科技有限公司 图像数据的处理方法、装置和系统
US20220312018A1 (en) * 2021-03-23 2022-09-29 Samsung Electronics Co., Ltd. Electronic device to encode video with max quantum parameter control and the method thereof
CN113115107B (zh) * 2021-04-15 2021-12-28 深圳鸿祥源科技有限公司 一种基于5g网络的手持视频采集终端系统
CN114650437B (zh) * 2022-03-14 2024-04-16 百果园技术(新加坡)有限公司 一种视频发布方法、装置、设备及存储介质
CN114827669B (zh) * 2022-03-31 2023-08-18 杭州网易智企科技有限公司 一种视频数据的传输方法、装置、介质及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070263720A1 (en) * 2006-05-12 2007-11-15 Freescale Semiconductor Inc. System and method of adaptive rate control for a video encoder
US20120294355A1 (en) * 2011-05-17 2012-11-22 Microsoft Corporation Video transcoding with dynamically modifiable spatial resolution

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3773585B2 (ja) * 1996-03-29 2006-05-10 富士通株式会社 画像符号化装置
AU2003248178B2 (en) 1997-12-23 2006-07-06 Thomson Licensing S.A. Low noise encoding and decoding apparatus and method
US6192154B1 (en) 1998-01-26 2001-02-20 International Business Machines Corporation Two-pass encoding method of digital motion video sequences for constant-or variable bit rate
US6343098B1 (en) * 1998-02-26 2002-01-29 Lucent Technologies Inc. Efficient rate control for multi-resolution video encoding
US6650704B1 (en) 1999-10-25 2003-11-18 Irvine Sensors Corporation Method of producing a high quality, high resolution image from a sequence of low quality, low resolution images that are undersampled and subject to jitter
US6674796B1 (en) 2000-02-14 2004-01-06 Harmonic, Inc. Statistical multiplexed video encoding for diverse video formats
EP1139669A1 (en) * 2000-03-28 2001-10-04 STMicroelectronics S.r.l. Coprocessor for motion estimation in digitised video sequence encoders
JP4258694B2 (ja) * 2000-10-06 2009-04-30 日本電気株式会社 動画像符号化方法、動画像符号化装置、動画像復号化装置及びそれらを備えた動画像通信システム
US20020071052A1 (en) 2000-12-07 2002-06-13 Tomoaki Itoh Transmission rate control method
US6785334B2 (en) 2001-08-15 2004-08-31 Koninklijke Philips Electronics N.V. Method for transmission control in hybrid temporal-SNR fine granular video coding
US7050502B2 (en) * 2001-09-18 2006-05-23 Matsushita Electric Industrial Co., Ltd. Method and apparatus for motion vector detection and medium storing method program directed to the same
GB2387055A (en) 2002-03-28 2003-10-01 Sony Uk Ltd Data compression method including target data quantity allocation
GB2387058A (en) * 2002-03-28 2003-10-01 Sony Uk Ltd Method of selecting a quantisation parameter using trial parameters
US6728315B2 (en) 2002-07-24 2004-04-27 Apple Computer, Inc. Method and apparatus for variable accuracy inter-picture timing specification for digital video encoding with reduced requirements for division operations
US7519115B2 (en) * 2003-03-31 2009-04-14 Duma Video, Inc. Video compression method and apparatus
US7352808B2 (en) * 2004-01-29 2008-04-01 International Business Machines Corporation System and method for the dynamic resolution change for video encoding
US7697608B2 (en) * 2004-02-03 2010-04-13 Sony Corporation Scalable MPEG video/macro block rate control
US20060056511A1 (en) * 2004-08-27 2006-03-16 University Of Victoria Innovation And Development Corporation Flexible polygon motion estimating method and system
KR100631743B1 (ko) 2004-11-26 2006-10-11 삼성전자주식회사 스케일러블 비트스트림의 효율적 전송 방법 및 장치
JP4251291B2 (ja) 2004-12-22 2009-04-08 日本ビクター株式会社 動画像符号化装置、動画像符号化方法
US7602997B2 (en) 2005-01-19 2009-10-13 The United States Of America As Represented By The Secretary Of The Army Method of super-resolving images
US7983341B2 (en) * 2005-02-24 2011-07-19 Ericsson Television Inc. Statistical content block matching scheme for pre-processing in encoding and transcoding
US7925108B2 (en) * 2005-03-14 2011-04-12 Panasonic Corporation Encoding device and dynamic image recording system having the encoding device
US8250618B2 (en) 2006-09-18 2012-08-21 Elemental Technologies, Inc. Real-time network adaptive digital video encoding/decoding
US20090110062A1 (en) * 2007-10-30 2009-04-30 The Hong Kong University Of Science And Technology Optimal heegard-berger coding schemes
US8077772B2 (en) * 2007-11-09 2011-12-13 Cisco Technology, Inc. Coding background blocks in video coding that includes coding as skipped
US8139607B2 (en) 2008-01-21 2012-03-20 At&T Intellectual Property I, L.P. Subscriber controllable bandwidth allocation
WO2009139303A1 (ja) 2008-05-16 2009-11-19 シャープ株式会社 映像記録装置
US8396114B2 (en) * 2009-01-29 2013-03-12 Microsoft Corporation Multiple bit rate video encoding using variable bit rate and dynamic resolution for adaptive video streaming
US8270473B2 (en) * 2009-06-12 2012-09-18 Microsoft Corporation Motion based dynamic resolution multiple bit rate video encoding
US8879623B2 (en) * 2009-09-02 2014-11-04 Sony Computer Entertainment Inc. Picture-level rate control for video encoding a scene-change I picture
GB2501402B (en) 2010-12-21 2015-06-24 Syndiant Inc Spatial light modulator with storage reducer
KR102074148B1 (ko) * 2011-08-30 2020-03-17 엔엘디 엘엘씨 복수의 최대 비트레이트 레벨들을 사용하여 인코딩된 비디오를 인코딩하고 스트리밍하기 위한 시스템들 및 방법들
EP2579593A1 (en) 2011-10-04 2013-04-10 Thomson Licensing Adaptive quantisation for intra-encoded image blocks
US9094684B2 (en) 2011-12-19 2015-07-28 Google Technology Holdings LLC Method for dual pass rate control video encoding
US9578342B2 (en) * 2013-06-24 2017-02-21 Dialogic Corporation Rate control algorithm for scalable video encoding with disposable P-frames
CN103686172B (zh) * 2013-12-20 2016-08-17 电子科技大学 低延迟视频编码可变比特率码率控制方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070263720A1 (en) * 2006-05-12 2007-11-15 Freescale Semiconductor Inc. System and method of adaptive rate control for a video encoder
US20120294355A1 (en) * 2011-05-17 2012-11-22 Microsoft Corporation Video transcoding with dynamically modifiable spatial resolution

Also Published As

Publication number Publication date
AU2016388357A1 (en) 2018-04-12
US20170208328A1 (en) 2017-07-20
KR20180054717A (ko) 2018-05-24
DE202016008214U1 (de) 2017-04-28
WO2017127213A1 (en) 2017-07-27
CA3001672A1 (en) 2017-07-27
CN107040781B (zh) 2020-11-03
GB2546887B (en) 2020-04-15
JP2019501554A (ja) 2019-01-17
GB201621731D0 (en) 2017-02-01
CN107040781A (zh) 2017-08-11
US10356406B2 (en) 2019-07-16
DE102016125353A1 (de) 2017-07-20
GB2546887A (en) 2017-08-02
CA3001672C (en) 2020-07-14
AU2016388357B2 (en) 2020-02-13
JP6714695B2 (ja) 2020-06-24

Similar Documents

Publication Publication Date Title
KR102118573B1 (ko) 동적 해상도 스위칭을 사용하는 실시간 비디오 인코더 레이트 제어
KR102120135B1 (ko) 마지막 프레임 모션 벡터 파티셔닝
US9210432B2 (en) Lossless inter-frame video coding
US20230379502A1 (en) Method and apparatus for image encoding/decoding
CN110741643A (zh) 用于视频代码化的复合帧内预测
CN111757106A (zh) 多级复合预测
US10277905B2 (en) Transform selection for non-baseband signal coding
US9641843B1 (en) Video coding using adaptive source variance based partitioning
US20180302643A1 (en) Video coding with degradation of residuals
US20170302965A1 (en) Adaptive directional loop filter
US10812832B2 (en) Efficient still image coding with video compression techniques
CN110679150A (zh) 相同帧运动估计和补偿
US9210424B1 (en) Adaptive prediction block size in video coding
JP7125559B2 (ja) ビットレート削減のためのビデオストリーム適応フィルタリング
US10491923B2 (en) Directional deblocking filter
US20190020878A1 (en) Sub8x8 block processing
KR20200005748A (ko) 복합 모션-보상 예측
KR102668253B1 (ko) 비트레이트 감소를 위한 비디오 스트림 적응형 필터링

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant