Overview
Request 4040 (accepted)
- Update to version 20.1.3:
* libobs: Update to version 20.1.3
* libobs: Fix FFmpeg constants
* libobs: Update to version 20.1.2
* libobs-d3d11: Allow rebuild even if output duplicator fails
* graphics-hook: blacklist OpenGL capture for "cm_client.exe"
* UI: Fix custom ffmpeg output file / URL entry
* linux-pulseaudio: Get correct default device
* libobs: Rename obs_video_thread to obs_graphics_thread
* libobs: Use new ffmpeg constants
* obs-ffmpeg: Use new ffmpeg constants
* deps/media-playback: Use new ffmpeg constants
* UI: Log when output timer events stop outputs
- Created by boombatower over 7 years ago
- In state accepted
-
Package maintainers:
boombatower,
darix, and
frispete
obs-studio.changes
Changed
-------------------------------------------------------------------
+Fri Nov 17 22:46:45 UTC 2017 - jimmy@boombatower.com
+
+- Update to version 20.1.3:
+ * libobs: Update to version 20.1.3
+ * libobs: Fix FFmpeg constants
+ * libobs: Update to version 20.1.2
+ * libobs-d3d11: Allow rebuild even if output duplicator fails
+ * graphics-hook: blacklist OpenGL capture for "cm_client.exe"
+ * UI: Fix custom ffmpeg output file / URL entry
+ * linux-pulseaudio: Get correct default device
+ * libobs: Rename obs_video_thread to obs_graphics_thread
+ * libobs: Use new ffmpeg constants
+ * obs-ffmpeg: Use new ffmpeg constants
+ * deps/media-playback: Use new ffmpeg constants
+ * UI: Log when output timer events stop outputs
+
+-------------------------------------------------------------------
Thu Oct 26 05:22:23 UTC 2017 - jimmy@boombatower.com
- Update to version 20.1.1:
obs-studio.spec
Changed
Name: obs-studio
-Version: 20.1.1
+Version: 20.1.3
Release: 0
Summary: A recording/broadcasting program
Group: Productivity/Multimedia/Video/Editors and Convertors
_service
Changed
<services>
<service name="tar_scm" mode="disabled">
<param name="versionformat">@PARENT_TAG@</param>
- <param name="revision">refs/tags/20.1.1</param>
+ <param name="revision">refs/tags/20.1.3</param>
<param name="url">git://github.com/jp9000/obs-studio.git</param>
<param name="scm">git</param>
<param name="changesgenerate">enable</param>
_servicedata
Changed
<servicedata>
<service name="tar_scm">
<param name="url">git://github.com/jp9000/obs-studio.git</param>
- <param name="changesrevision">bf7561934ed098a4cf3c885f5e55febb23cac563</param>
+ <param name="changesrevision">350e7a76121937535d6e71ca61655c0fe810614c</param>
</service>
</servicedata>
obs-studio-20.1.1.tar.xz/UI/forms/OBSBasicSettings.ui -> obs-studio-20.1.3.tar.xz/UI/forms/OBSBasicSettings.ui
Changed
<item row="1" column="1">
<widget class="QStackedWidget" name="stackedWidget_2">
<property name="currentIndex">
- <number>1</number>
+ <number>0</number>
</property>
<widget class="QWidget" name="page_5">
<layout class="QHBoxLayout" name="horizontalLayout_12">
obs-studio-20.1.1.tar.xz/UI/frontend-plugins/frontend-tools/output-timer.cpp -> obs-studio-20.1.3.tar.xz/UI/frontend-plugins/frontend-tools/output-timer.cpp
Changed
void OutputTimer::EventStopStreaming()
{
+ blog(LOG_INFO, "Stopping stream due to OutputTimer timeout");
obs_frontend_streaming_stop();
}
void OutputTimer::EventStopRecording()
{
+ blog(LOG_INFO, "Stopping recording due to OutputTimer timeout");
obs_frontend_recording_stop();
}
obs-studio-20.1.1.tar.xz/deps/media-playback/media-playback/decode.c -> obs-studio-20.1.3.tar.xz/deps/media-playback/media-playback/decode.c
Changed
while (hwa) {
if (hwa->id == id) {
- if (hwa->pix_fmt == AV_PIX_FMT_VDA_VLD ||
- hwa->pix_fmt == AV_PIX_FMT_DXVA2_VLD ||
+ if (hwa->pix_fmt == AV_PIX_FMT_VIDEOTOOLBOX ||
+ hwa->pix_fmt == AV_PIX_FMT_DXVA2_VLD ||
hwa->pix_fmt == AV_PIX_FMT_VAAPI_VLD) {
c = avcodec_find_decoder_by_name(hwa->name);
if (c)
return false;
}
- if (d->codec->capabilities & CODEC_CAP_TRUNCATED)
- d->decoder->flags |= CODEC_FLAG_TRUNCATED;
+ if (d->codec->capabilities & CODEC_CAP_TRUNC)
+ d->decoder->flags |= CODEC_FLAG_TRUNC;
return true;
}
obs-studio-20.1.1.tar.xz/deps/media-playback/media-playback/decode.h -> obs-studio-20.1.3.tar.xz/deps/media-playback/media-playback/decode.h
Changed
#pragma warning(pop)
#endif
+#if LIBAVCODEC_VERSION_MAJOR >= 58
+#define CODEC_CAP_TRUNC AV_CODEC_CAP_TRUNCATED
+#define CODEC_FLAG_TRUNC AV_CODEC_FLAG_TRUNCATED
+#else
+#define CODEC_CAP_TRUNC CODEC_CAP_TRUNCATED
+#define CODEC_FLAG_TRUNC CODEC_FLAG_TRUNCATED
+#endif
+
struct mp_media;
struct mp_decode {
obs-studio-20.1.1.tar.xz/libobs-d3d11/d3d11-duplicator.cpp -> obs-studio-20.1.3.tar.xz/libobs-d3d11/d3d11-duplicator.cpp
Changed
ComPtr<IDXGIResource> res;
HRESULT hr;
+ if (!d->duplicator) {
+ return false;
+ }
+
hr = d->duplicator->AcquireNextFrame(0, &info, res.Assign());
if (hr == DXGI_ERROR_ACCESS_LOST) {
return false;
obs-studio-20.1.1.tar.xz/libobs-d3d11/d3d11-rebuild.cpp -> obs-studio-20.1.3.tar.xz/libobs-d3d11/d3d11-rebuild.cpp
Changed
((gs_pixel_shader*)obj)->Rebuild(dev);
break;
case gs_type::gs_duplicator:
- ((gs_duplicator*)obj)->Start();
+ try {
+ ((gs_duplicator*)obj)->Start();
+ } catch (...) {
+ ((gs_duplicator*)obj)->Release();
+ }
break;
case gs_type::gs_swap_chain:
((gs_swap_chain*)obj)->Rebuild(dev);
obs-studio-20.1.1.tar.xz/libobs/media-io/media-remux.c -> obs-studio-20.1.3.tar.xz/libobs/media-io/media-remux.c
Changed
#include <sys/types.h>
#include <sys/stat.h>
+#if LIBAVCODEC_VERSION_MAJOR >= 58
+#define CODEC_FLAG_GLOBAL_H AV_CODEC_FLAG_GLOBAL_HEADER
+#else
+#define CODEC_FLAG_GLOBAL_H CODEC_FLAG_GLOBAL_HEADER
+#endif
+
struct media_remux_job {
int64_t in_size;
AVFormatContext *ifmt_ctx, *ofmt_ctx;
out_stream->codec->codec_tag = 0;
if (job->ofmt_ctx->oformat->flags & AVFMT_GLOBALHEADER)
- out_stream->codec->flags |= CODEC_FLAG_GLOBAL_HEADER;
+ out_stream->codec->flags |= CODEC_FLAG_GLOBAL_H;
}
#ifndef _NDEBUG
obs-studio-20.1.1.tar.xz/libobs/obs-config.h -> obs-studio-20.1.3.tar.xz/libobs/obs-config.h
Changed
*
* Reset to zero each major or minor version
*/
-#define LIBOBS_API_PATCH_VER 1
+#define LIBOBS_API_PATCH_VER 3
#define MAKE_SEMANTIC_VERSION(major, minor, patch) \
((major << 24) | \
obs-studio-20.1.1.tar.xz/libobs/obs-ffmpeg-compat.h -> obs-studio-20.1.3.tar.xz/libobs/obs-ffmpeg-compat.h
Changed
# define av_frame_free avcodec_free_frame
#endif
+#if LIBAVCODEC_VERSION_MAJOR >= 58
+#define CODEC_CAP_TRUNC AV_CODEC_CAP_TRUNCATED
+#define CODEC_FLAG_TRUNC AV_CODEC_FLAG_TRUNCATED
+#define INPUT_BUFFER_PADDING_SIZE AV_INPUT_BUFFER_PADDING_SIZE
+#else
+#define CODEC_CAP_TRUNC CODEC_CAP_TRUNCATED
+#define CODEC_FLAG_TRUNC CODEC_FLAG_TRUNCATED
+#define INPUT_BUFFER_PADDING_SIZE FF_INPUT_BUFFER_PADDING_SIZE
+#endif
obs-studio-20.1.1.tar.xz/libobs/obs-internal.h -> obs-studio-20.1.3.tar.xz/libobs/obs-internal.h
Changed
extern struct obs_core *obs;
-extern void *obs_video_thread(void *param);
+extern void *obs_graphics_thread(void *param);
extern gs_effect_t *obs_load_effect(gs_effect_t **effect, const char *file);
obs-studio-20.1.1.tar.xz/libobs/obs-video.c -> obs-studio-20.1.3.tar.xz/libobs/obs-video.c
Changed
static const char *tick_sources_name = "tick_sources";
static const char *render_displays_name = "render_displays";
static const char *output_frame_name = "output_frame";
-void *obs_video_thread(void *param)
+void *obs_graphics_thread(void *param)
{
uint64_t last_time = 0;
uint64_t interval = video_output_get_frame_time(obs->video.video);
const char *video_thread_name =
profile_store_name(obs_get_profiler_name_store(),
- "obs_video_thread(%g"NBSP"ms)", interval / 1000000.);
+ "obs_graphics_thread(%g"NBSP"ms)", interval / 1000000.);
profile_register_root(video_thread_name, interval);
srand((unsigned int)time(NULL));
obs-studio-20.1.1.tar.xz/libobs/obs.c -> obs-studio-20.1.3.tar.xz/libobs/obs.c
Changed
gs_leave_context();
errorcode = pthread_create(&video->video_thread, NULL,
- obs_video_thread, obs);
+ obs_graphics_thread, obs);
if (errorcode != 0)
return OBS_VIDEO_FAIL;
obs-studio-20.1.1.tar.xz/plugins/linux-pulseaudio/pulse-input.c -> obs-studio-20.1.3.tar.xz/plugins/linux-pulseaudio/pulse-input.c
Changed
/* user settings */
char *device;
+ bool input;
/* server info */
enum speaker_layout speakers;
void *userdata)
{
UNUSED_PARAMETER(c);
- UNUSED_PARAMETER(userdata);
+ PULSE_DATA(userdata);
blog(LOG_INFO, "Server name: '%s %s'",
i->server_name, i->server_version);
+ if (data->device && strcmp("default", data->device) == 0) {
+ if (data->input) {
+ bfree(data->device);
+ data->device = bstrdup(i->default_source_name);
+
+ blog(LOG_DEBUG, "Default input device: '%s'", data->device);
+ } else {
+ char *monitor = bzalloc(strlen(i->default_sink_name) + 9);
+ strcat(monitor, i->default_sink_name);
+ strcat(monitor, ".monitor");
+
+ bfree(data->device);
+ data->device = bstrdup(monitor);
+
+ blog(LOG_DEBUG, "Default output device: '%s'", data->device);
+ bfree(monitor);
+ }
+ }
+
pulse_signal(0);
}
pulse_get_sink_info_list(pulse_output_info, (void *) devices);
pulse_unref();
+ size_t count = obs_property_list_item_count(devices);
+
+ if (count > 0)
+ obs_property_list_insert_string(devices, 0,
+ obs_module_text("Default"), "default");
+
return props;
}
}
/**
- * Server info callback
- */
-static void pulse_input_device(pa_context *c, const pa_server_info *i,
- void *userdata)
-{
- UNUSED_PARAMETER(c);
- obs_data_t *settings = (obs_data_t*) userdata;
-
- obs_data_set_default_string(settings, "device_id",
- i->default_source_name);
- blog(LOG_DEBUG, "Default input device: '%s'", i->default_source_name);
-
- pulse_signal(0);
-}
-
-static void pulse_output_device(pa_context *c, const pa_server_info *i,
- void *userdata)
-{
- UNUSED_PARAMETER(c);
- obs_data_t *settings = (obs_data_t*) userdata;
-
- char *monitor = bzalloc(strlen(i->default_sink_name) + 9);
- strcat(monitor, i->default_sink_name);
- strcat(monitor, ".monitor");
-
- obs_data_set_default_string(settings, "device_id", monitor);
- blog(LOG_DEBUG, "Default output device: '%s'", monitor);
- bfree(monitor);
-
- pulse_signal(0);
-}
-
-/**
* Get plugin defaults
*/
-static void pulse_defaults(obs_data_t *settings, bool input)
+static void pulse_defaults(obs_data_t *settings)
{
- pulse_init();
-
- pa_server_info_cb_t cb = (input)
- ? pulse_input_device : pulse_output_device;
- pulse_get_server_info(cb, (void *) settings);
-
- pulse_unref();
-}
-
-static void pulse_input_defaults(obs_data_t *settings)
-{
- return pulse_defaults(settings, true);
-}
-
-static void pulse_output_defaults(obs_data_t *settings)
-{
- return pulse_defaults(settings, false);
+ obs_data_set_default_string(settings, "device_id", "default");
}
/**
/**
* Create the plugin object
*/
-static void *pulse_create(obs_data_t *settings, obs_source_t *source)
+static void *pulse_create(obs_data_t *settings, obs_source_t *source, bool input)
{
struct pulse_data *data = bzalloc(sizeof(struct pulse_data));
+ data->input = input;
data->source = source;
pulse_init();
return data;
}
+static void *pulse_input_create(obs_data_t *settings, obs_source_t *source)
+{
+ return pulse_create(settings, source, true);
+}
+
+static void *pulse_output_create(obs_data_t *settings, obs_source_t *source)
+{
+ return pulse_create(settings, source, false);
+}
+
struct obs_source_info pulse_input_capture = {
.id = "pulse_input_capture",
.type = OBS_SOURCE_TYPE_INPUT,
.output_flags = OBS_SOURCE_AUDIO |
OBS_SOURCE_DO_NOT_DUPLICATE,
.get_name = pulse_input_getname,
- .create = pulse_create,
+ .create = pulse_input_create,
.destroy = pulse_destroy,
.update = pulse_update,
- .get_defaults = pulse_input_defaults,
+ .get_defaults = pulse_defaults,
.get_properties = pulse_input_properties
};
OBS_SOURCE_DO_NOT_DUPLICATE |
OBS_SOURCE_DO_NOT_SELF_MONITOR,
.get_name = pulse_output_getname,
- .create = pulse_create,
+ .create = pulse_output_create,
.destroy = pulse_destroy,
.update = pulse_update,
- .get_defaults = pulse_output_defaults,
+ .get_defaults = pulse_defaults,
.get_properties = pulse_output_properties
};
obs-studio-20.1.1.tar.xz/plugins/obs-ffmpeg/ffmpeg-mux/ffmpeg-mux.c -> obs-studio-20.1.3.tar.xz/plugins/obs-ffmpeg/ffmpeg-mux/ffmpeg-mux.c
Changed
#include <libavformat/avformat.h>
+#if LIBAVCODEC_VERSION_MAJOR >= 58
+#define CODEC_FLAG_GLOBAL_H AV_CODEC_FLAG_GLOBAL_HEADER
+#else
+#define CODEC_FLAG_GLOBAL_H CODEC_FLAG_GLOBAL_HEADER
+#endif
+
/* ------------------------------------------------------------------------- */
struct resize_buf {
ffm->video_stream->time_base = context->time_base;
if (ffm->output->oformat->flags & AVFMT_GLOBALHEADER)
- context->flags |= CODEC_FLAG_GLOBAL_HEADER;
+ context->flags |= CODEC_FLAG_GLOBAL_H;
}
static void create_audio_stream(struct ffmpeg_mux *ffm, int idx)
av_get_default_channel_layout(context->channels);
if (ffm->output->oformat->flags & AVFMT_GLOBALHEADER)
- context->flags |= CODEC_FLAG_GLOBAL_HEADER;
+ context->flags |= CODEC_FLAG_GLOBAL_H;
ffm->num_audio_streams++;
}
obs-studio-20.1.1.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c -> obs-studio-20.1.3.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c
Changed
/* enable experimental FFmpeg encoder if the only one available */
enc->context->strict_std_compliance = -2;
- enc->context->flags = CODEC_FLAG_GLOBAL_HEADER;
+ enc->context->flags = CODEC_FLAG_GLOBAL_H;
if (initialize_codec(enc))
return enc;
obs-studio-20.1.1.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-compat.h -> obs-studio-20.1.3.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-compat.h
Changed
#if LIBAVCODEC_VERSION_MAJOR >= 57
#define av_free_packet av_packet_unref
#endif
+
+#if LIBAVCODEC_VERSION_MAJOR >= 58
+#define CODEC_CAP_TRUNC AV_CODEC_CAP_TRUNCATED
+#define CODEC_FLAG_TRUNC AV_CODEC_FLAG_TRUNCATED
+#define CODEC_FLAG_GLOBAL_H AV_CODEC_FLAG_GLOBAL_HEADER
+#else
+#define CODEC_CAP_TRUNC CODEC_CAP_TRUNCATED
+#define CODEC_FLAG_TRUNC CODEC_FLAG_TRUNCATED
+#define CODEC_FLAG_GLOBAL_H CODEC_FLAG_GLOBAL_HEADER
+#endif
obs-studio-20.1.1.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-output.c -> obs-studio-20.1.3.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-output.c
Changed
data->video->time_base = context->time_base;
if (data->output->oformat->flags & AVFMT_GLOBALHEADER)
- context->flags |= CODEC_FLAG_GLOBAL_HEADER;
+ context->flags |= CODEC_FLAG_GLOBAL_H;
if (!open_video_codec(data))
return false;
data->audio_size = get_audio_size(data->audio_format, aoi.speakers, 1);
if (data->output->oformat->flags & AVFMT_GLOBALHEADER)
- context->flags |= CODEC_FLAG_GLOBAL_HEADER;
+ context->flags |= CODEC_FLAG_GLOBAL_H;
return open_audio_codec(data);
}
else
copy_data(&data->dst_picture, frame, context->height, context->pix_fmt);
- if (data->output->flags & AVFMT_RAWPICTURE) {
+ if (data->output->flags) {
packet.flags |= AV_PKT_FLAG_KEY;
packet.stream_index = data->video->index;
packet.data = data->dst_picture.data[0];
obs-studio-20.1.1.tar.xz/plugins/win-capture/graphics-hook/gl-capture.c -> obs-studio-20.1.3.tar.xz/plugins/win-capture/graphics-hook/gl-capture.c
Changed
/* "life is feudal: your own" somehow uses both opengl and directx at
* the same time, so blacklist it from capturing opengl */
const char *process_name = get_process_name();
- if (_strcmpi(process_name, "yo_cm_client.exe") == 0) {
+ if (_strcmpi(process_name, "yo_cm_client.exe") == 0 ||
+ _strcmpi(process_name, "cm_client.exe") == 0) {
hlog("Ignoring opengl for game: %s", process_name);
return true;
}
obs-studio-20.1.1.tar.xz/plugins/win-dshow/ffmpeg-decode.c -> obs-studio-20.1.3.tar.xz/plugins/win-dshow/ffmpeg-decode.c
Changed
******************************************************************************/
#include "ffmpeg-decode.h"
+#include "obs-ffmpeg-compat.h"
#include <obs-avc.h>
int ffmpeg_decode_init(struct ffmpeg_decode *decode, enum AVCodecID id)
return ret;
}
- if (decode->codec->capabilities & CODEC_CAP_TRUNCATED)
- decode->decoder->flags |= CODEC_FLAG_TRUNCATED;
+ if (decode->codec->capabilities & CODEC_CAP_TRUNC)
+ decode->decoder->flags |= CODEC_FLAG_TRUNC;
return 0;
}
static inline void copy_data(struct ffmpeg_decode *decode, uint8_t *data,
size_t size)
{
- size_t new_size = size + FF_INPUT_BUFFER_PADDING_SIZE;
+ size_t new_size = size + INPUT_BUFFER_PADDING_SIZE;
if (decode->packet_size < new_size) {
decode->packet_buffer = brealloc(decode->packet_buffer,
decode->packet_size = new_size;
}
- memset(decode->packet_buffer + size, 0, FF_INPUT_BUFFER_PADDING_SIZE);
+ memset(decode->packet_buffer + size, 0, INPUT_BUFFER_PADDING_SIZE);
memcpy(decode->packet_buffer, data, size);
}
No build results available
No rpmlint results available
Request History
boombatower created request over 7 years ago
- Update to version 20.1.3:
* libobs: Update to version 20.1.3
* libobs: Fix FFmpeg constants
* libobs: Update to version 20.1.2
* libobs-d3d11: Allow rebuild even if output duplicator fails
* graphics-hook: blacklist OpenGL capture for "cm_client.exe"
* UI: Fix custom ffmpeg output file / URL entry
* linux-pulseaudio: Get correct default device
* libobs: Rename obs_video_thread to obs_graphics_thread
* libobs: Use new ffmpeg constants
* obs-ffmpeg: Use new ffmpeg constants
* deps/media-playback: Use new ffmpeg constants
* UI: Log when output timer events stop outputs
boombatower accepted request over 7 years ago
ok