From patchwork Fri Nov 16 16:43:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Evgeny X-Patchwork-Id: 11042 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 00F7644D502 for ; Fri, 16 Nov 2018 18:43:39 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7DFFE689E95; Fri, 16 Nov 2018 18:43:39 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from basic.maxnet.ru (mx.maxnet.ru [195.112.97.17]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DFC7C689CC7 for ; Fri, 16 Nov 2018 18:43:33 +0200 (EET) Received: from [192.168.1.222] (kea.obninsk.ru [195.112.98.178] (may be forged)) by basic.maxnet.ru (8.14.6/8.14.6) with ESMTP id wAGGhYnq023725 for ; Fri, 16 Nov 2018 19:43:34 +0300 (MSK) (envelope-from kea@obninsk.ru) To: ffmpeg-devel@ffmpeg.org From: =?UTF-8?B?0JXQstCz0LXQvdC40Lk=?= Message-ID: Date: Fri, 16 Nov 2018 19:43:34 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 Content-Language: en-US Subject: [FFmpeg-devel] alsa pause/resume X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From cf822ea7fc1885d0a47f24928359ee05fdbf76a0 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Fri, 16 Nov 2018 15:54:44 +0300 Subject: [PATCH 5/6] Alsa: pause/resume control --- libavdevice/alsa_enc.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/libavdevice/alsa_enc.c b/libavdevice/alsa_enc.c index 0bef625..df14c85 100644 --- a/libavdevice/alsa_enc.c +++ b/libavdevice/alsa_enc.c @@ -134,6 +134,38 @@ static int audio_write_frame(AVFormatContext *s1, int stream_index, return audio_write_packet(s1, &pkt); } +static int alsa_control_message(AVFormatContext *h, int type, + void *data, size_t data_size) +{ + AlsaData *s = h->priv_data; + snd_pcm_t *handle = s->h; + int ret = -ENOSYS; + + switch(type) { + case AV_APP_TO_DEV_PAUSE: + return snd_pcm_pause(handle, 1); + case AV_APP_TO_DEV_PLAY: + return snd_pcm_pause(handle, 0); + case AV_APP_TO_DEV_TOGGLE_PAUSE: + return ret; + case AV_APP_TO_DEV_MUTE: + return ret; + case AV_APP_TO_DEV_UNMUTE: + return ret; + case AV_APP_TO_DEV_TOGGLE_MUTE: + return ret; + case AV_APP_TO_DEV_SET_VOLUME: + return ret; + case AV_APP_TO_DEV_GET_VOLUME: + return ret; + case AV_APP_TO_DEV_GET_MUTE: + return ret; + default: + break; + } + return AVERROR(ENOSYS); +} + static void audio_get_output_timestamp(AVFormatContext *s1, int stream, int64_t *dts, int64_t *wall) @@ -169,6 +201,7 @@ AVOutputFormat ff_alsa_muxer = { .write_uncoded_frame = audio_write_frame, .get_device_list = audio_get_device_list, .get_output_timestamp = audio_get_output_timestamp, + .control_message = alsa_control_message, .flags = AVFMT_NOFILE, .priv_class = &alsa_muxer_class, }; -- 2.1.4