mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	* add new field "read_only" to memory blocks * add new API function pa_context_get_server() * filter capture data through mcalign on client * make module-tunnel use pa_socket_client_new_string() instead of using pa_resolve_server() directly. * remove pa_resolve_server() * remove debug.h and replace it by a macro definition on the gcc command line * some strbuf cleanups * small fixes in pa_stream for cleanup when server dies * new CLI command "load-sample-dir-lazy" * send FQDN as part of server info * rework mcalign, this time with memory block merging * fix iochannel cleanup when connection dies * check getaddrinfo() results git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@286 fefdeb5f-60dc-0310-8127-8f9354f1896f
		
			
				
	
	
		
			77 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef foomcalignhfoo
 | 
						|
#define foomcalignhfoo
 | 
						|
 | 
						|
/* $Id$ */
 | 
						|
 | 
						|
/***
 | 
						|
  This file is part of polypaudio.
 | 
						|
 
 | 
						|
  polypaudio is free software; you can redistribute it and/or modify
 | 
						|
  it under the terms of the GNU Lesser General Public License as
 | 
						|
  published by the Free Software Foundation; either version 2.1 of the
 | 
						|
  License, or (at your option) any later version.
 | 
						|
 
 | 
						|
  polypaudio is distributed in the hope that it will be useful, but
 | 
						|
  WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 | 
						|
  Lesser General Public License for more details.
 | 
						|
 
 | 
						|
  You should have received a copy of the GNU Lesser General Public
 | 
						|
  License along with polypaudio; if not, write to the Free Software
 | 
						|
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
						|
  USA.
 | 
						|
***/
 | 
						|
 | 
						|
#include "memblock.h"
 | 
						|
#include "memchunk.h"
 | 
						|
 | 
						|
/* An alignment object, used for aligning memchunks to multiples of
 | 
						|
 * the frame size. */
 | 
						|
 | 
						|
/* Method of operation: the user creates a new mcalign object by
 | 
						|
 * calling pa_mcalign_new() with the appropriate aligning
 | 
						|
 * granularity. After that he may call pa_mcalign_push() for an input
 | 
						|
 * memchunk. After exactly one memchunk the user has to call
 | 
						|
 * pa_mcalign_pop() until it returns -1. If pa_mcalign_pop() returns
 | 
						|
 * 0, the memchunk *c is valid and aligned to the granularity. Some
 | 
						|
 * pseudocode illustrating this:
 | 
						|
 *
 | 
						|
 * struct pa_mcalign *a = pa_mcalign_new(4, NULL);
 | 
						|
 *
 | 
						|
 * for (;;) {
 | 
						|
 *   struct pa_memchunk input;
 | 
						|
 *
 | 
						|
 *   ... fill input ... 
 | 
						|
 *
 | 
						|
 *   pa_mcalign_push(m, &input);
 | 
						|
 *   pa_memblock_unref(input.memblock);
 | 
						|
 * 
 | 
						|
 *   for (;;) {
 | 
						|
 *     struct pa_memchunk output;
 | 
						|
 *
 | 
						|
 *     if (pa_mcalign_pop(m, &output) < 0)
 | 
						|
 *       break;
 | 
						|
 *
 | 
						|
 *     ... consume output ...
 | 
						|
 *
 | 
						|
 *     pa_memblock_unref(output.memblock);
 | 
						|
 *   }
 | 
						|
 * }
 | 
						|
 *
 | 
						|
 * pa_memchunk_free(a);
 | 
						|
 * */
 | 
						|
 | 
						|
struct pa_mcalign;
 | 
						|
 | 
						|
struct pa_mcalign *pa_mcalign_new(size_t base, struct pa_memblock_stat *s);
 | 
						|
void pa_mcalign_free(struct pa_mcalign *m);
 | 
						|
 | 
						|
/* Push a new memchunk into the aligner. The caller of this routine
 | 
						|
 * has to free the memchunk by himself. */
 | 
						|
void pa_mcalign_push(struct pa_mcalign *m, const struct pa_memchunk *c);
 | 
						|
 | 
						|
/* Pop a new memchunk from the aligner. Returns 0 when sucessful,
 | 
						|
 * nonzero otherwise. */
 | 
						|
int pa_mcalign_pop(struct pa_mcalign *m, struct pa_memchunk *c);
 | 
						|
 | 
						|
#endif
 |