提交 1ee277ed 编写于 作者: J jp9000

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.
上级 908a165d
...@@ -777,3 +777,21 @@ void obs_free_encoder_packet(struct encoder_packet *packet) ...@@ -777,3 +777,21 @@ void obs_free_encoder_packet(struct encoder_packet *packet)
bfree(packet->data); bfree(packet->data);
memset(packet, 0, sizeof(struct encoder_packet)); 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 { ...@@ -472,6 +472,7 @@ struct obs_encoder {
uint32_t scaled_width; uint32_t scaled_width;
uint32_t scaled_height; uint32_t scaled_height;
enum video_format preferred_format;
bool active; bool active;
......
...@@ -1313,6 +1313,19 @@ EXPORT uint32_t obs_encoder_get_width(const obs_encoder_t *encoder); ...@@ -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 */ /** For video encoders, returns the height of the encoded image */
EXPORT uint32_t obs_encoder_get_height(const obs_encoder_t *encoder); 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 */ /** Gets the default settings for an encoder type */
EXPORT obs_data_t *obs_encoder_defaults(const char *id); EXPORT obs_data_t *obs_encoder_defaults(const char *id);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册