Re: [FFmpeg-devel] [PATCH] ffplay: remove redundant silence buffer

2016-03-21 Thread Lukasz Marek
On 19.03.2016 19:16, Marton Balint wrote:
> 
> On Thu, 17 Mar 2016, Lukasz Marek wrote:
> 
>> Signed-off-by: Lukasz Marek 
>> ---
>> ffplay.c | 13 ++---
>> 1 file changed, 6 insertions(+), 7 deletions(-)
>>
> LGTM, thanks.

Ok, pushed, thx

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] ffplay: remove redundant silence buffer

2016-03-20 Thread Lukasz Marek
Signed-off-by: Lukasz Marek 
---
 ffplay.c | 13 ++---
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/ffplay.c b/ffplay.c
index 2cfdf26..731ae25 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -243,7 +243,6 @@ typedef struct VideoState {
 AVStream *audio_st;
 PacketQueue audioq;
 int audio_hw_buf_size;
-uint8_t silence_buf[SDL_AUDIO_MIN_BUFFER_SIZE];
 uint8_t *audio_buf;
 uint8_t *audio_buf1;
 unsigned int audio_buf_size; /* in bytes */
@@ -2532,7 +2531,7 @@ static int audio_decode_frame(VideoState *is)
 static void sdl_audio_callback(void *opaque, Uint8 *stream, int len)
 {
 VideoState *is = opaque;
-int audio_size, len1;
+int audio_size, len1, silence = 0;
 
 audio_callback_time = av_gettime_relative();
 
@@ -2541,8 +2540,8 @@ static void sdl_audio_callback(void *opaque, Uint8 
*stream, int len)
audio_size = audio_decode_frame(is);
if (audio_size < 0) {
 /* if error, just output silence */
-   is->audio_buf  = is->silence_buf;
-   is->audio_buf_size = sizeof(is->silence_buf) / 
is->audio_tgt.frame_size * is->audio_tgt.frame_size;
+   silence = 1;
+   is->audio_buf_size = SDL_AUDIO_MIN_BUFFER_SIZE / 
is->audio_tgt.frame_size * is->audio_tgt.frame_size;
} else {
if (is->show_mode != SHOW_MODE_VIDEO)
update_sample_display(is, (int16_t *)is->audio_buf, 
audio_size);
@@ -2553,11 +2552,11 @@ static void sdl_audio_callback(void *opaque, Uint8 
*stream, int len)
 len1 = is->audio_buf_size - is->audio_buf_index;
 if (len1 > len)
 len1 = len;
-if (!is->muted && is->audio_volume == SDL_MIX_MAXVOLUME)
+if (!is->muted && !silence && is->audio_volume == SDL_MIX_MAXVOLUME)
 memcpy(stream, (uint8_t *)is->audio_buf + is->audio_buf_index, 
len1);
 else {
-memset(stream, is->silence_buf[0], len1);
-if (!is->muted)
+memset(stream, 0, len1);
+if (!is->muted && !silence)
 SDL_MixAudio(stream, (uint8_t *)is->audio_buf + 
is->audio_buf_index, len1, is->audio_volume);
 }
 len -= len1;
-- 
1.9.1

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] ffplay: remove redundant silence buffer

2016-03-19 Thread Marton Balint


On Thu, 17 Mar 2016, Lukasz Marek wrote:


Signed-off-by: Lukasz Marek 
---
ffplay.c | 13 ++---
1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/ffplay.c b/ffplay.c
index 2cfdf26..731ae25 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -243,7 +243,6 @@ typedef struct VideoState {
AVStream *audio_st;
PacketQueue audioq;
int audio_hw_buf_size;
-uint8_t silence_buf[SDL_AUDIO_MIN_BUFFER_SIZE];
uint8_t *audio_buf;
uint8_t *audio_buf1;
unsigned int audio_buf_size; /* in bytes */
@@ -2532,7 +2531,7 @@ static int audio_decode_frame(VideoState *is)
static void sdl_audio_callback(void *opaque, Uint8 *stream, int len)
{
VideoState *is = opaque;
-int audio_size, len1;
+int audio_size, len1, silence = 0;

audio_callback_time = av_gettime_relative();

@@ -2541,8 +2540,8 @@ static void sdl_audio_callback(void *opaque, Uint8 
*stream, int len)
   audio_size = audio_decode_frame(is);
   if (audio_size < 0) {
/* if error, just output silence */
-   is->audio_buf  = is->silence_buf;
-   is->audio_buf_size = sizeof(is->silence_buf) / 
is->audio_tgt.frame_size * is->audio_tgt.frame_size;
+   silence = 1;
+   is->audio_buf_size = SDL_AUDIO_MIN_BUFFER_SIZE / 
is->audio_tgt.frame_size * is->audio_tgt.frame_size;
   } else {
   if (is->show_mode != SHOW_MODE_VIDEO)
   update_sample_display(is, (int16_t *)is->audio_buf, 
audio_size);
@@ -2553,11 +2552,11 @@ static void sdl_audio_callback(void *opaque, Uint8 
*stream, int len)
len1 = is->audio_buf_size - is->audio_buf_index;
if (len1 > len)
len1 = len;
-if (!is->muted && is->audio_volume == SDL_MIX_MAXVOLUME)
+if (!is->muted && !silence && is->audio_volume == SDL_MIX_MAXVOLUME)
memcpy(stream, (uint8_t *)is->audio_buf + is->audio_buf_index, 
len1);
else {
-memset(stream, is->silence_buf[0], len1);
-if (!is->muted)
+memset(stream, 0, len1);
+if (!is->muted && !silence)
SDL_MixAudio(stream, (uint8_t *)is->audio_buf + 
is->audio_buf_index, len1, is->audio_volume);
}
len -= len1;
--


LGTM, thanks.

Regards,
Marton
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel