Open Broadcaster Software
Free, open source software for live streaming and recording
obs-avc.h
Go to the documentation of this file.
1 /******************************************************************************
2  Copyright (C) 2014 by Hugh Bailey <obs.jim@gmail.com>
3 
4  This program is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program. If not, see <http://www.gnu.org/licenses/>.
16 ******************************************************************************/
17 
18 #pragma once
19 
20 #include "util/c99defs.h"
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 struct encoder_packet;
27 
28 enum { OBS_NAL_UNKNOWN = 0,
39 };
40 
45 };
46 
47 /* Helpers for parsing AVC NAL units. */
48 
49 EXPORT bool obs_avc_keyframe(const uint8_t *data, size_t size);
50 EXPORT const uint8_t *obs_avc_find_startcode(const uint8_t *p,
51  const uint8_t *end);
52 EXPORT void obs_parse_avc_packet(struct encoder_packet *avc_packet,
53  const struct encoder_packet *src);
54 EXPORT size_t obs_parse_avc_header(uint8_t **header, const uint8_t *data,
55  size_t size);
56 EXPORT void obs_extract_avc_headers(const uint8_t *packet, size_t size,
57  uint8_t **new_packet_data,
58  size_t *new_packet_size,
59  uint8_t **header_data, size_t *header_size,
60  uint8_t **sei_data, size_t *sei_size);
61 
62 #ifdef __cplusplus
63 }
64 #endif
OBS_NAL_SLICE
@ OBS_NAL_SLICE
Definition: obs-avc.h:29
obs_parse_avc_header
EXPORT size_t obs_parse_avc_header(uint8_t **header, const uint8_t *data, size_t size)
OBS_NAL_UNKNOWN
@ OBS_NAL_UNKNOWN
Definition: obs-avc.h:28
encoder_packet::data
uint8_t * data
Definition: obs-encoder.h:45
EXPORT
#define EXPORT
Definition: c99defs.h:37
OBS_NAL_SLICE_DPA
@ OBS_NAL_SLICE_DPA
Definition: obs-avc.h:30
OBS_NAL_AUD
@ OBS_NAL_AUD
Definition: obs-avc.h:37
OBS_NAL_SLICE_DPC
@ OBS_NAL_SLICE_DPC
Definition: obs-avc.h:32
OBS_NAL_PRIORITY_DISPOSABLE
@ OBS_NAL_PRIORITY_DISPOSABLE
Definition: obs-avc.h:41
c99defs.h
obs_avc_keyframe
EXPORT bool obs_avc_keyframe(const uint8_t *data, size_t size)
OBS_NAL_SPS
@ OBS_NAL_SPS
Definition: obs-avc.h:35
obs_avc_find_startcode
const EXPORT uint8_t * obs_avc_find_startcode(const uint8_t *p, const uint8_t *end)
encoder_packet::size
size_t size
Definition: obs-encoder.h:46
OBS_NAL_SLICE_DPB
@ OBS_NAL_SLICE_DPB
Definition: obs-avc.h:31
encoder_packet
Definition: obs-encoder.h:44
OBS_NAL_SEI
@ OBS_NAL_SEI
Definition: obs-avc.h:34
OBS_NAL_FILLER
@ OBS_NAL_FILLER
Definition: obs-avc.h:38
OBS_NAL_PRIORITY_LOW
@ OBS_NAL_PRIORITY_LOW
Definition: obs-avc.h:42
OBS_NAL_PRIORITY_HIGH
@ OBS_NAL_PRIORITY_HIGH
Definition: obs-avc.h:43
obs_parse_avc_packet
EXPORT void obs_parse_avc_packet(struct encoder_packet *avc_packet, const struct encoder_packet *src)
OBS_NAL_PRIORITY_HIGHEST
@ OBS_NAL_PRIORITY_HIGHEST
Definition: obs-avc.h:44
OBS_NAL_PPS
@ OBS_NAL_PPS
Definition: obs-avc.h:36
OBS_NAL_SLICE_IDR
@ OBS_NAL_SLICE_IDR
Definition: obs-avc.h:33
obs_extract_avc_headers
EXPORT void obs_extract_avc_headers(const uint8_t *packet, size_t size, uint8_t **new_packet_data, size_t *new_packet_size, uint8_t **header_data, size_t *header_size, uint8_t **sei_data, size_t *sei_size)