sox-users@lists.sourceforge.net unofficial mirror
 help / color / mirror / code / Atom feed
From: Sun Zhenliang <hisunzhenliang@outlook.com>
To: "sox-users@lists.sourceforge.net" <sox-users@lists.sourceforge.net>
Subject: 回复:  Incorrect work of sox_open_memstream_write with memstream buffer and buffersize
Date: Mon, 26 Jul 2021 02:09:09 +0000	[thread overview]
Message-ID: <OS3PR01MB597630F1DC69BD3B2641102AC1E89@OS3PR01MB5976.jpnprd01.prod.outlook.com> (raw)
In-Reply-To: <YPvu5jQo5c2SQqrM@www.stare.cz>


[-- Attachment #1.1: Type: text/plain, Size: 3013 bytes --]

here is a demo:

```

  1.  #include "sox.h"
  2.  #include "util.h"
  3.  #include <stdio.h>
  4.  #include <assert.h>
  5.
  6.  /* Example of reading and writing audio files stored in memory buffers
  7.   * rather than actual files.
  8.   *
  9.   * Usage: example5 input output
  10.  */
  11.
  12.
  13. int main(int argc, char * argv[])
  14. {
  15.   static sox_format_t * in, * out;
  16.   #define MAX_SAMPLES (size_t)2048
  17.   sox_sample_t samples[MAX_SAMPLES];
  18.   char * buffer;
  19.   size_t buffer_size;
  20.   size_t number_read;
  21.
  22.   assert(argc == 3);
  23.
  24.   assert(sox_init() == SOX_SUCCESS);
  25.   assert((in = sox_open_read(argv[1], NULL, NULL, NULL)));
  26.   sox_encodinginfo_t out_encoding = {
  27.     SOX_ENCODING_ULAW,
  28.     8,
  29.     0,
  30.     sox_option_default,
  31.     sox_option_default,
  32.     sox_option_default,
  33.     sox_false
  34.   };
  35.   sox_signalinfo_t out_signal = {
  36.     8000,
  37.     1,
  38.     0,
  39.     0,
  40.     NULL
  41.   };
  42.   assert(out = sox_open_memstream_write(&buffer, &buffer_size, &out_signal, &out_encoding, "wav", NULL));
  43.   while ((number_read = sox_read(in, samples, MAX_SAMPLES)))
  44.     assert(sox_write(out, samples, number_read) == number_read);
  45.   sox_close(out);
  46.   sox_close(in);
  47.
  48.   printf("%ld\n", buffer_size);
  49.
  50.   free(buffer);
  51.   sox_quit();
  52.   return 0;
  53. }


```

$ ./example5 in.wav out.wav

$ 58


At this line 48: `printf("%ld\n", buffer_size);`
I take it for granted that it should be the length of the whole file,but due to the seek option,I can only get length of wav header.

I know it is feasible to get file data before sox_close through ft.fp, but at some situations I need get data from buff and buffsize.
________________________________
发件人: Jan Stary <hans@stare.cz>
发送时间: 2021年7月24日 18:43
收件人: sox-users@lists.sourceforge.net <sox-users@lists.sourceforge.net>
主题: Re: [SoX-users] Incorrect work of sox_open_memstream_write with memstream buffer and buffersize

On Jul 23 01:43:36, hisunzhenliang@outlook.com wrote:
> Opened by sox_open_memstream_write function,the buffer and buffersize will work incorrectly when seeking back。
>
> For example, when opening buffer with sox_open_memstream_write to get a wav format output,wav handler's  stopwrite function will seek back to the beginning to rewrite wav header. In this situation,after closing ft,I assume that I can get whole data from buff and buffsize,but I can only get the wav header.
>
> I don't think it would be better to have seek back to the end when you need to rewrite data with a seek operation.

Without seeing the actual code,
it's hard to try to help.



_______________________________________________
Sox-users mailing list
Sox-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sox-users

[-- Attachment #1.2: Type: text/html, Size: 25999 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



[-- Attachment #3: Type: text/plain, Size: 158 bytes --]

_______________________________________________
Sox-users mailing list
Sox-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sox-users

      reply	other threads:[~2021-07-26  2:09 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-23  1:43 Incorrect work of sox_open_memstream_write with memstream buffer and buffersize Sun Zhenliang
2021-07-24 10:43 ` Jan Stary
2021-07-26  2:09   ` Sun Zhenliang [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://lists.sourceforge.net/lists/listinfo/sox-users

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=OS3PR01MB597630F1DC69BD3B2641102AC1E89@OS3PR01MB5976.jpnprd01.prod.outlook.com \
    --to=sox-users@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/sox.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).