mpg123 logo
download : svn :: features :: sf.net project - bug tracker :: news archive
libmpg123 API :: testing :: benchmarking :: faq :: links :: contact
Note: This API doc is automatically generated from the current development version that you can get via Subversion or as a daily snapshot from http://mpg123.org/snapshot. There may be differences (additions) compared to the latest stable release. See NEWS.libmpg123 and the overall NEWS file on libmpg123 versions and important changes between them.
Let me emphasize that the policy for libmpg123 is to always stay backwards compatible -- only additions are planned (and it's not yet planned to change the plans;-).

mpglib.c

Go to the documentation of this file.
00001 /*
00002         mpglib: test program for libmpg123, in the style of the legacy mpglib test program
00003 
00004         copyright 2007 by the mpg123 project - free software under the terms of the LGPL 2.1
00005         see COPYING and AUTHORS files in distribution or http://mpg123.org
00006         initially written by Thomas Orgis
00007 */
00008 
00009 #include "mpg123.h"
00010 #include <unistd.h>
00011 #include <stdio.h>
00012 
00013 #define INBUFF  16384
00014 #define OUTBUFF 32768 
00015 
00016 int main(int argc, char **argv)
00017 {
00018         size_t size;
00019         unsigned char buf[INBUFF];  /* input buffer  */
00020         unsigned char out[OUTBUFF]; /* output buffer */
00021         ssize_t len;
00022         int ret;
00023         size_t in = 0, outc = 0;
00024         mpg123_handle *m;
00025 
00026         mpg123_init();
00027         m = mpg123_new(argc > 1 ? argv[1] : NULL, &ret);
00028         if(m == NULL)
00029         {
00030                 fprintf(stderr,"Unable to create mpg123 handle: %s\n", mpg123_plain_strerror(ret));
00031                 return -1;
00032         }
00033         mpg123_param(m, MPG123_VERBOSE, 2, 0); /* Brabble a bit about the parsing/decoding. */
00034 
00035         /* Now mpg123 is being prepared for feeding. The main loop will read chunks from stdin and feed them to mpg123;
00036            then take decoded data as available to write to stdout. */
00037         mpg123_open_feed(m);
00038         if(m == NULL) return -1;
00039 
00040         fprintf(stderr, "Feed me some MPEG audio to stdin, I will decode to stdout.\n");
00041         while(1) /* Read and write until everything is through. */
00042         {
00043                 len = read(0,buf,INBUFF);
00044                 if(len <= 0)
00045                 {
00046                         fprintf(stderr, "input data end\n");
00047                         break;
00048                 }
00049                 in += len;
00050                 /* Feed input chunk and get first chunk of decoded audio. */
00051                 ret = mpg123_decode(m,buf,len,out,OUTBUFF,&size);
00052                 if(ret == MPG123_NEW_FORMAT)
00053                 {
00054                         long rate;
00055                         int channels, enc;
00056                         mpg123_getformat(m, &rate, &channels, &enc);
00057                         fprintf(stderr, "New format: %li Hz, %i channels, encoding value %i\n", rate, channels, enc);
00058                 }
00059                 write(1,out,size);
00060                 outc += size;
00061                 while(ret != MPG123_ERR && ret != MPG123_NEED_MORE)
00062                 { /* Get all decoded audio that is available now before feeding more input. */
00063                         ret = mpg123_decode(m,NULL,0,out,OUTBUFF,&size);
00064                         write(1,out,size);
00065                         outc += size;
00066                 }
00067                 if(ret == MPG123_ERR){ fprintf(stderr, "some error: %s", mpg123_strerror(m)); break; }
00068         }
00069         fprintf(stderr, "%lu bytes in, %lu bytes out\n", (unsigned long)in, (unsigned long)outc);
00070 
00071         /* Done decoding, now just clean up and leave. */
00072         mpg123_delete(m);
00073         mpg123_exit();
00074         return 0;
00075 }
00076 

Generated on Thu Aug 21 19:19:01 2008 for libmpg123 by  doxygen 1.5.4