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,
29
OBS_NAL_SLICE
= 1,
30
OBS_NAL_SLICE_DPA
= 2,
31
OBS_NAL_SLICE_DPB
= 3,
32
OBS_NAL_SLICE_DPC
= 4,
33
OBS_NAL_SLICE_IDR
= 5,
34
OBS_NAL_SEI
= 6,
35
OBS_NAL_SPS
= 7,
36
OBS_NAL_PPS
= 8,
37
OBS_NAL_AUD
= 9,
38
OBS_NAL_FILLER
= 12,
39
};
40
41
enum
{
OBS_NAL_PRIORITY_DISPOSABLE
= 0,
42
OBS_NAL_PRIORITY_LOW
= 1,
43
OBS_NAL_PRIORITY_HIGH
= 2,
44
OBS_NAL_PRIORITY_HIGHEST
= 3,
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)
libobs
obs-avc.h
Generated on Thu Apr 16 2020 00:00:00 for Open Broadcaster Software by
1.8.17