1 /* 2 * AVC helper functions for muxers 3 * Copyright (c) 2008 Aurelien Jacobs <aurel@gnuage.org> 4 * 5 * This file is part of FFmpeg. 6 * 7 * FFmpeg is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation; either 10 * version 2.1 of the License, or (at your option) any later version. 11 * 12 * FFmpeg is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with FFmpeg; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 */ 21 22 #ifndef AVFORMAT_AVC_H 23 #define AVFORMAT_AVC_H 24 25 #include <stdint.h> 26 #include "avio.h" 27 28 int ff_avc_parse_nal_units(AVIOContext *s, const uint8_t *buf, int size); 29 int ff_avc_parse_nal_units_buf(const uint8_t *buf_in, uint8_t **buf, int *size); 30 int ff_isom_write_avcc(AVIOContext *pb, const uint8_t *data, int len); 31 const uint8_t *ff_avc_find_startcode(const uint8_t *p, const uint8_t *end); 32 int ff_avc_write_annexb_extradata(const uint8_t *in, uint8_t **buf, int *size); 33 const uint8_t *ff_avc_mp4_find_startcode(const uint8_t *start, 34 const uint8_t *end, 35 int nal_length_size); 36 uint8_t *ff_nal_unit_extract_rbsp(const uint8_t *src, uint32_t src_len, 37 uint32_t *dst_len, int header_len); 38 39 typedef struct { 40 uint8_t id; 41 uint8_t profile_idc; 42 uint8_t level_idc; 43 uint8_t constraint_set_flags; 44 uint8_t chroma_format_idc; 45 uint8_t bit_depth_luma; 46 uint8_t bit_depth_chroma; 47 uint8_t frame_mbs_only_flag; 48 AVRational sar; 49 } H264SPS; 50 51 int ff_avc_decode_sps(H264SPS *sps, const uint8_t *buf, int buf_size); 52 53 #endif /* AVFORMAT_AVC_H */ 54