mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-20 04:42:18 +02:00
libobs: Add preferred video format encoder funcs
Allows the ability to hint at encoders what format should be used. This is particularly useful if libobs is currently operating in planar 4:4:4, but you want to force an encoder used for streaming to convert to NV12 to prevent streaming issues.
This commit is contained in:
parent
908a165d62
commit
1ee277ed33
@ -777,3 +777,21 @@ void obs_free_encoder_packet(struct encoder_packet *packet)
|
||||
bfree(packet->data);
|
||||
memset(packet, 0, sizeof(struct encoder_packet));
|
||||
}
|
||||
|
||||
void obs_encoder_set_preferred_video_format(obs_encoder_t *encoder,
|
||||
enum video_format format)
|
||||
{
|
||||
if (!encoder || encoder->info.type != OBS_ENCODER_VIDEO)
|
||||
return;
|
||||
|
||||
encoder->preferred_format = format;
|
||||
}
|
||||
|
||||
enum video_format obs_encoder_get_preferred_video_format(
|
||||
const obs_encoder_t *encoder)
|
||||
{
|
||||
if (!encoder || encoder->info.type != OBS_ENCODER_VIDEO)
|
||||
return VIDEO_FORMAT_NONE;
|
||||
|
||||
return encoder->preferred_format;
|
||||
}
|
||||
|
@ -472,6 +472,7 @@ struct obs_encoder {
|
||||
|
||||
uint32_t scaled_width;
|
||||
uint32_t scaled_height;
|
||||
enum video_format preferred_format;
|
||||
|
||||
bool active;
|
||||
|
||||
|
13
libobs/obs.h
13
libobs/obs.h
@ -1313,6 +1313,19 @@ EXPORT uint32_t obs_encoder_get_width(const obs_encoder_t *encoder);
|
||||
/** For video encoders, returns the height of the encoded image */
|
||||
EXPORT uint32_t obs_encoder_get_height(const obs_encoder_t *encoder);
|
||||
|
||||
/**
|
||||
* Sets the preferred video format for a video encoder. If the encoder can use
|
||||
* the format specified, it will force a conversion to that format if the
|
||||
* obs output format does not match the preferred format.
|
||||
*
|
||||
* If the format is set to VIDEO_FORMAT_NONE, will revert to the default
|
||||
* functionality of converting only when absolutely necessary.
|
||||
*/
|
||||
EXPORT void obs_encoder_set_preferred_video_format(obs_encoder_t *encoder,
|
||||
enum video_format format);
|
||||
EXPORT enum video_format obs_encoder_get_preferred_video_format(
|
||||
const obs_encoder_t *encoder);
|
||||
|
||||
/** Gets the default settings for an encoder type */
|
||||
EXPORT obs_data_t *obs_encoder_defaults(const char *id);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user