New upstream version 0.16.2+dfsg1

This commit is contained in:
Sebastian Ramacher 2016-10-10 21:01:40 +02:00
parent 67704ac59c
commit 6efda2859e
377 changed files with 7938 additions and 696 deletions

View file

@ -6,6 +6,8 @@ RateControl="Rate Control"
KeyframeIntervalSec="Keyframe Interval (seconds, 0=auto)"
Lossless="Lossless"
BFrames="B-frames"
NVENC.Use2Pass="Use Two-Pass Encoding"
NVENC.Preset.default="Default"
NVENC.Preset.hq="High Quality"

View file

@ -2,17 +2,18 @@ FFmpegOutput="Saída do FFmpeg"
FFmpegAAC="Codificador AAC Padrão do FFmpeg"
Bitrate="Taxa de Bits"
Preset="Predefinição"
RateControl="Controle de Taxa"
KeyframeIntervalSec="Intervalo do keyframe (segundos, 0=automático)"
RateControl="Controle da Taxa de Bits"
KeyframeIntervalSec="Intervalo de Keyframe (segundos, 0=auto)"
Lossless="Sem perdas"
NVENC.Preset.default="Predefinido"
NVENC.Use2Pass="Utilizar a codificação em dois passos"
NVENC.Preset.default="Padrão"
NVENC.Preset.hq="Alta Qualidade"
NVENC.Preset.hp="Alto Desempenho"
NVENC.Preset.hp="Alta Performance"
NVENC.Preset.bd="Bluray"
NVENC.Preset.ll="Baixa latência"
NVENC.Preset.llhq="Baixa latência Alta Qualidade"
NVENC.Preset.llhp="Baixa latência Alto Desempenho"
NVENC.Preset.ll="Baixa Latência"
NVENC.Preset.llhq="Baixa Latência e Alta Qualidade"
NVENC.Preset.llhp="Baixa latência e Alta Performance"
NVENC.Level="Nível"
FFmpegSource="Fonte de mídia"

View file

@ -3,6 +3,7 @@ FFmpegAAC="AAC-kodare (FFmpeg standard)"
Bitrate="Bithastighet"
Preset="Förinställning"
RateControl="Hastighetskontroll"
KeyframeIntervalSec="Intervall för keyframes (sekunder, 0=automatisk)"
Lossless="Förlustfri"
NVENC.Use2Pass="Använd tvåpassavkodning"

View file

@ -0,0 +1,49 @@
FFmpegOutput="Вивід FFmpeg"
FFmpegAAC="FFmpeg AAC енкодер за замовчанням"
Bitrate="Бітрейт"
Preset="Шаблон"
RateControl="Керування потоком"
KeyframeIntervalSec="Інтервал ключових кадрів (секунд, 0 = авто)"
Lossless="Без втрат"
NVENC.Use2Pass="Використовувати двопрохідне кодування"
NVENC.Preset.default="Стандартний"
NVENC.Preset.hq="Висока якість"
NVENC.Preset.hp="Висока продуктивність"
NVENC.Preset.bd="Blu-ray"
NVENC.Preset.ll="З низькою затримкою"
NVENC.Preset.llhq="З низькою затримкою, висока Якість"
NVENC.Preset.llhp="З низькою затримкою, висока Продуктивність"
NVENC.Level="Рівень"
FFmpegSource="Мультимедіа"
LocalFile="Локальний файл"
Looping="Повторювати"
Input="Вхід"
InputFormat="Вхідний формат"
ForceFormat="Примусове перетворення формату"
HardwareDecode="Використовувати апаратне декодування, за наявності"
ClearOnMediaEnd="Не відображати джерело, коли відтворення завершено"
Advanced="Розширені параметри"
AudioBufferSize="Розмір аудіо буфера, (кадрів)"
VideoBufferSize="Розмір відео буфера, (кадрів)"
FrameDropping="Вид пропущених кадрів"
DiscardNone="Немає"
DiscardDefault="За замовчанням (лише збійні пакети)"
DiscardNonRef="Всі крім опорних кадрів"
DiscardBiDir="Лише В-кадри"
DiscardNonIntra="Всі крім I-кадрів"
DiscardNonKey="Всі крім ключових кадрів"
DiscardAll="Всі кадри (Обережно!)"
RestartWhenActivated="Грати з початку, коли джерело стає активним"
ColorRange="YUV, колірний діапазон"
ColorRange.Auto="Автовизначення"
ColorRange.Partial="Частковий"
ColorRange.Full="Повний"
MediaFileFilter.AllMediaFiles="Файли мультимедіа"
MediaFileFilter.VideoFiles="Відео"
MediaFileFilter.AudioFiles="Аудіо"
MediaFileFilter.AllFiles="Всі файли"

View file

@ -274,7 +274,7 @@ static void ffmpeg_mux_stop(void *data, uint64_t ts)
{
struct ffmpeg_muxer *stream = data;
if (capturing(stream)) {
if (capturing(stream) || ts == 0) {
stream->stop_ts = (int64_t)ts / 1000LL;
os_atomic_set_bool(&stream->stopping, true);
os_atomic_set_bool(&stream->capturing, false);

View file

@ -54,6 +54,7 @@ struct nvenc_encoder {
int height;
bool first_packet;
bool initialized;
};
static const char *nvenc_getname(void *unused)
@ -113,6 +114,8 @@ static bool nvenc_init_codec(struct nvenc_encoder *enc)
return false;
}
enc->initialized = true;
*((AVPicture*)enc->vframe) = enc->dst_picture;
return true;
}
@ -138,6 +141,7 @@ static bool nvenc_update(void *data, obs_data_t *settings)
bool twopass = obs_data_get_bool(settings, "2pass");
int gpu = (int)obs_data_get_int(settings, "gpu");
bool cbr_override = obs_data_get_bool(settings, "cbr");
int bf = (int)obs_data_get_int(settings, "bf");
video_t *video = obs_encoder_video(enc->encoder);
const struct video_output_info *voi = video_output_get_info(video);
@ -159,7 +163,7 @@ static bool nvenc_update(void *data, obs_data_t *settings)
nvenc_video_info(enc, &info);
av_opt_set_int(enc->context->priv_data, "cbr", false, 0);
av_opt_set(enc->context->priv_data, "profile", profile, 0);
av_opt_set(enc->context->priv_data, "preset", preset, 0);
if (astrcmpi(rc, "cqp") == 0) {
@ -198,6 +202,7 @@ static bool nvenc_update(void *data, obs_data_t *settings)
AVCOL_SPC_BT709 : AVCOL_SPC_BT470BG;
enc->context->color_range = info.range == VIDEO_RANGE_FULL ?
AVCOL_RANGE_JPEG : AVCOL_RANGE_MPEG;
enc->context->max_b_frames = bf;
if (keyint_sec)
enc->context->gop_size = keyint_sec * voi->fps_num /
@ -232,6 +237,20 @@ static void nvenc_destroy(void *data)
{
struct nvenc_encoder *enc = data;
if (enc->initialized) {
AVPacket pkt = {0};
int r_pkt = 1;
while (r_pkt) {
if (avcodec_encode_video2(enc->context, &pkt, NULL,
&r_pkt) < 0)
break;
if (r_pkt)
av_free_packet(&pkt);
}
}
avcodec_close(enc->context);
av_frame_free(&enc->vframe);
avpicture_free(&enc->dst_picture);
@ -363,6 +382,7 @@ static void nvenc_defaults(obs_data_t *settings)
obs_data_set_default_string(settings, "level", "auto");
obs_data_set_default_bool(settings, "2pass", true);
obs_data_set_default_int(settings, "gpu", 0);
obs_data_set_default_int(settings, "bf", 2);
}
static bool rate_control_modified(obs_properties_t *ppts, obs_property_t *p,
@ -472,6 +492,9 @@ static obs_properties_t *nvenc_properties(void *unused)
obs_module_text("NVENC.Use2Pass"));
obs_properties_add_int(props, "gpu", obs_module_text("GPU"), 0, 8, 1);
obs_properties_add_int(props, "bf", obs_module_text("BFrames"),
0, 4, 1);
return props;
}