1*09537850SAkhilesh Sanikop /* 2*09537850SAkhilesh Sanikop * Copyright 2019 The libgav1 Authors 3*09537850SAkhilesh Sanikop * 4*09537850SAkhilesh Sanikop * Licensed under the Apache License, Version 2.0 (the "License"); 5*09537850SAkhilesh Sanikop * you may not use this file except in compliance with the License. 6*09537850SAkhilesh Sanikop * You may obtain a copy of the License at 7*09537850SAkhilesh Sanikop * 8*09537850SAkhilesh Sanikop * http://www.apache.org/licenses/LICENSE-2.0 9*09537850SAkhilesh Sanikop * 10*09537850SAkhilesh Sanikop * Unless required by applicable law or agreed to in writing, software 11*09537850SAkhilesh Sanikop * distributed under the License is distributed on an "AS IS" BASIS, 12*09537850SAkhilesh Sanikop * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*09537850SAkhilesh Sanikop * See the License for the specific language governing permissions and 14*09537850SAkhilesh Sanikop * limitations under the License. 15*09537850SAkhilesh Sanikop */ 16*09537850SAkhilesh Sanikop 17*09537850SAkhilesh Sanikop #ifndef LIBGAV1_EXAMPLES_IVF_PARSER_H_ 18*09537850SAkhilesh Sanikop #define LIBGAV1_EXAMPLES_IVF_PARSER_H_ 19*09537850SAkhilesh Sanikop 20*09537850SAkhilesh Sanikop #include <cstddef> 21*09537850SAkhilesh Sanikop #include <cstdint> 22*09537850SAkhilesh Sanikop 23*09537850SAkhilesh Sanikop namespace libgav1 { 24*09537850SAkhilesh Sanikop 25*09537850SAkhilesh Sanikop struct IvfFileHeader { 26*09537850SAkhilesh Sanikop IvfFileHeader() = default; 27*09537850SAkhilesh Sanikop IvfFileHeader(const IvfFileHeader& rhs) = default; 28*09537850SAkhilesh Sanikop IvfFileHeader& operator=(const IvfFileHeader& rhs) = default; 29*09537850SAkhilesh Sanikop IvfFileHeader(IvfFileHeader&& rhs) = default; 30*09537850SAkhilesh Sanikop IvfFileHeader& operator=(IvfFileHeader&& rhs) = default; 31*09537850SAkhilesh Sanikop 32*09537850SAkhilesh Sanikop size_t width = 0; 33*09537850SAkhilesh Sanikop size_t height = 0; 34*09537850SAkhilesh Sanikop size_t frame_rate_numerator = 0; 35*09537850SAkhilesh Sanikop size_t frame_rate_denominator = 0; 36*09537850SAkhilesh Sanikop }; 37*09537850SAkhilesh Sanikop 38*09537850SAkhilesh Sanikop struct IvfFrameHeader { 39*09537850SAkhilesh Sanikop IvfFrameHeader() = default; 40*09537850SAkhilesh Sanikop IvfFrameHeader(const IvfFrameHeader& rhs) = default; 41*09537850SAkhilesh Sanikop IvfFrameHeader& operator=(const IvfFrameHeader& rhs) = default; 42*09537850SAkhilesh Sanikop IvfFrameHeader(IvfFrameHeader&& rhs) = default; 43*09537850SAkhilesh Sanikop IvfFrameHeader& operator=(IvfFrameHeader&& rhs) = default; 44*09537850SAkhilesh Sanikop 45*09537850SAkhilesh Sanikop size_t frame_size = 0; 46*09537850SAkhilesh Sanikop int64_t timestamp = 0; 47*09537850SAkhilesh Sanikop }; 48*09537850SAkhilesh Sanikop 49*09537850SAkhilesh Sanikop bool ParseIvfFileHeader(const uint8_t* header_buffer, 50*09537850SAkhilesh Sanikop IvfFileHeader* ivf_file_header); 51*09537850SAkhilesh Sanikop 52*09537850SAkhilesh Sanikop bool ParseIvfFrameHeader(const uint8_t* header_buffer, 53*09537850SAkhilesh Sanikop IvfFrameHeader* ivf_frame_header); 54*09537850SAkhilesh Sanikop 55*09537850SAkhilesh Sanikop } // namespace libgav1 56*09537850SAkhilesh Sanikop 57*09537850SAkhilesh Sanikop #endif // LIBGAV1_EXAMPLES_IVF_PARSER_H_ 58