All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 3/6] pcm:file: Enable file writing for capture path
@ 2017-02-17  7:17 sutar.mounesh
  2017-02-17 17:45 ` Takashi Iwai
  0 siblings, 1 reply; 2+ messages in thread
From: sutar.mounesh @ 2017-02-17  7:17 UTC (permalink / raw)
  To: patch; +Cc: Mounesh Sutar, Timo Wischer, alsa-devel, mounesh_sutar

From: Timo Wischer <twischer@de.adit-jv.com>

This commit reverts parts of commit 4081be0b87ab9fa53a8906e66bc240f18a7a9a54,
because it is realy useful to use the file plugin in a capture path for
debugging. Also it fixes the truncate issue mentioned in above commit.

Additionally following MMAP access issue is considered:
$ arecord -D teeraw -M -d5 arecord.wav
Recording WAVE 'arecord.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
ALSA lib pcm/pcm_file.c:358:(snd_pcm_file_write_bytes)
write failed: Bad file descriptor
ALSA lib pcm/pcm_file.c:358:(snd_pcm_file_write_bytes)
write failed: Bad file descriptor
arecord: pcm/pcm_file.c:397: snd_pcm_file_add_frames:
Assertion `file->wbuf_used_bytes < file->wbuf_size_bytes' failed.
Aborted by signal Aborted...

Signed-off-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Mounesh Sutar <sutar.mounesh@gmail.com>

diff --git a/src/pcm/pcm_file.c b/src/pcm/pcm_file.c
index 6d119d6..0363f84 100644
--- a/src/pcm/pcm_file.c
+++ b/src/pcm/pcm_file.c
@@ -544,6 +544,7 @@ static snd_pcm_sframes_t snd_pcm_file_writen(snd_pcm_t *pcm, void **bufs, snd_pc
 static snd_pcm_sframes_t snd_pcm_file_readi(snd_pcm_t *pcm, void *buffer, snd_pcm_uframes_t size)
 {
 	snd_pcm_file_t *file = pcm->private_data;
+	snd_pcm_channel_area_t areas[pcm->channels];
 	snd_pcm_sframes_t n;
 
 	n = _snd_pcm_readi(file->gen.slave, buffer, size);
@@ -555,8 +556,10 @@ static snd_pcm_sframes_t snd_pcm_file_readi(snd_pcm_t *pcm, void *buffer, snd_pc
 		__snd_pcm_unlock(pcm);
 		if (n < 0)
 			return n;
-		return n * 8 / pcm->frame_bits;
+		n = n * 8 / pcm->frame_bits;
 	}
+	snd_pcm_areas_from_buf(pcm, areas, buffer);
+	snd_pcm_file_add_frames(pcm, areas, 0, n);
 	return n;
 }
 
@@ -564,6 +567,7 @@ static snd_pcm_sframes_t snd_pcm_file_readi(snd_pcm_t *pcm, void *buffer, snd_pc
 static snd_pcm_sframes_t snd_pcm_file_readn(snd_pcm_t *pcm, void **bufs, snd_pcm_uframes_t size)
 {
 	snd_pcm_file_t *file = pcm->private_data;
+	snd_pcm_channel_area_t areas[pcm->channels];
 	snd_pcm_sframes_t n;
 
 	if (file->ifd >= 0) {
@@ -572,6 +576,10 @@ static snd_pcm_sframes_t snd_pcm_file_readn(snd_pcm_t *pcm, void **bufs, snd_pcm
 	}
 
 	n = _snd_pcm_readn(file->gen.slave, bufs, size);
+	if (n > 0) {
+		snd_pcm_areas_from_bufs(pcm, areas, bufs);
+		snd_pcm_file_add_frames(pcm, areas, 0, n);
+	}
 	return n;
 }
 
@@ -635,7 +643,7 @@ static int snd_pcm_file_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t * params)
 		a->first = slave->sample_bits * channel;
 		a->step = slave->frame_bits;
 	}
-	if ((file->fd < 0) && (pcm->stream == SND_PCM_STREAM_PLAYBACK)) {
+	if (file->fd < 0) {
 		err = snd_pcm_file_open_output_file(file);
 		if (err < 0) {
 			SYSERR("failed opening output file %s", file->fname);
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH 3/6] pcm:file: Enable file writing for capture path
  2017-02-17  7:17 [PATCH 3/6] pcm:file: Enable file writing for capture path sutar.mounesh
@ 2017-02-17 17:45 ` Takashi Iwai
  0 siblings, 0 replies; 2+ messages in thread
From: Takashi Iwai @ 2017-02-17 17:45 UTC (permalink / raw)
  To: sutar.mounesh; +Cc: Timo Wischer, alsa-devel, mounesh_sutar

On Fri, 17 Feb 2017 08:17:17 +0100,
sutar.mounesh@gmail.com wrote:
> 
> From: Timo Wischer <twischer@de.adit-jv.com>
> 
> This commit reverts parts of commit 4081be0b87ab9fa53a8906e66bc240f18a7a9a54,
> because it is realy useful to use the file plugin in a capture path for
> debugging. Also it fixes the truncate issue mentioned in above commit.
> 
> Additionally following MMAP access issue is considered:
> $ arecord -D teeraw -M -d5 arecord.wav
> Recording WAVE 'arecord.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
> ALSA lib pcm/pcm_file.c:358:(snd_pcm_file_write_bytes)
> write failed: Bad file descriptor
> ALSA lib pcm/pcm_file.c:358:(snd_pcm_file_write_bytes)
> write failed: Bad file descriptor
> arecord: pcm/pcm_file.c:397: snd_pcm_file_add_frames:
> Assertion `file->wbuf_used_bytes < file->wbuf_size_bytes' failed.
> Aborted by signal Aborted...
> 
> Signed-off-by: Timo Wischer <twischer@de.adit-jv.com>
> Signed-off-by: Mounesh Sutar <sutar.mounesh@gmail.com>

Applied, thanks.


Takashi

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-02-17 17:45 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-17  7:17 [PATCH 3/6] pcm:file: Enable file writing for capture path sutar.mounesh
2017-02-17 17:45 ` Takashi Iwai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.