Shaka Packager SDK
Loading...
Searching...
No Matches
video_slice_header_parser.h
1// Copyright 2016 Google LLC. All rights reserved.
2//
3// Use of this source code is governed by a BSD-style
4// license that can be found in the LICENSE file or at
5// https://developers.google.com/open-source/licenses/bsd
6
7#ifndef PACKAGER_MEDIA_CODECS_VIDEO_SLICE_HEADER_PARSER_H_
8#define PACKAGER_MEDIA_CODECS_VIDEO_SLICE_HEADER_PARSER_H_
9
10#include <cstdint>
11#include <vector>
12
13#include <packager/macros/classes.h>
14#include <packager/media/codecs/h264_parser.h>
15#include <packager/media/codecs/h265_parser.h>
16#include <packager/media/codecs/hevc_decoder_configuration_record.h>
17
18namespace shaka {
19namespace media {
20
22 public:
24 virtual ~VideoSliceHeaderParser() {}
25
28 virtual bool Initialize(
29 const std::vector<uint8_t>& decoder_configuration) = 0;
30
33 // GetHeaderSize.
34 virtual bool InitializeLayered(
35 const std::vector<uint8_t>& layered_decoder_configuration) = 0;
36
43 virtual bool ProcessNalu(const Nalu& nalu) = 0;
44
46 virtual int64_t GetHeaderSize(const Nalu& nalu) = 0;
47
48 private:
49 DISALLOW_COPY_AND_ASSIGN(VideoSliceHeaderParser);
50};
51
53 public:
56
59 bool Initialize(const std::vector<uint8_t>& decoder_configuration) override;
61 const std::vector<uint8_t>& decoder_configuration) override;
62 bool ProcessNalu(const Nalu& nalu) override;
63 int64_t GetHeaderSize(const Nalu& nalu) override;
65
66 private:
67 H264Parser parser_;
68
69 DISALLOW_COPY_AND_ASSIGN(H264VideoSliceHeaderParser);
70};
71
73 public:
76
79 bool Initialize(const std::vector<uint8_t>& decoder_configuration) override;
81 const std::vector<uint8_t>& decoder_configuration) override;
82 bool ProcessNalu(const Nalu& nalu) override;
83 int64_t GetHeaderSize(const Nalu& nalu) override;
85
86 private:
87 bool ParseParameterSets(const HEVCDecoderConfigurationRecord& config);
88
89 H265Parser parser_;
90
91 DISALLOW_COPY_AND_ASSIGN(H265VideoSliceHeaderParser);
92};
93
94} // namespace media
95} // namespace shaka
96
97#endif // PACKAGER_MEDIA_CODECS_VIDEO_SLICE_HEADER_PARSER_H_
bool Initialize(const std::vector< uint8_t > &decoder_configuration) override
int64_t GetHeaderSize(const Nalu &nalu) override
Gets the header size of the given NALU. Returns < 0 on error.
bool InitializeLayered(const std::vector< uint8_t > &decoder_configuration) override
int64_t GetHeaderSize(const Nalu &nalu) override
Gets the header size of the given NALU. Returns < 0 on error.
bool InitializeLayered(const std::vector< uint8_t > &decoder_configuration) override
bool Initialize(const std::vector< uint8_t > &decoder_configuration) override
Class for parsing HEVC decoder configuration record.
virtual int64_t GetHeaderSize(const Nalu &nalu)=0
Gets the header size of the given NALU. Returns < 0 on error.
virtual bool Initialize(const std::vector< uint8_t > &decoder_configuration)=0
virtual bool InitializeLayered(const std::vector< uint8_t > &layered_decoder_configuration)=0
virtual bool ProcessNalu(const Nalu &nalu)=0
All the methods that are virtual are virtual for mocking.