• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            CELT編碼解碼

            轉(zhuǎn)載自:https://gist.github.com/haxar/2402477


            解碼:

             
            #include 
            <stdio.h>
            #include 
            <stdlib.h>
            #include 
            <stdint.h>
            #include 
            <string.h>
            #include 
            <unistd.h>
            #include 
            <errno.h>
             
            #include 
            "celt.h"
             
            int
            main(
            int argc, char **argv) {
                
            char data[2048= { };
                
            short pcm[2048= { };
                
            int rate        = 48000;
                
            int framesize   = 960;
                
            int channels    = 1;
                
            int tmp;
                
            int rem;
                
            void *mode;
                
            void *state;
                uint16_t len;
             
                
            while ((tmp = getopt(argc, argv, "r:f:c:")) != -1{
                    
            switch (tmp) {
                      
            case 'r':
                        rate 
            = atoi(optarg);
                        
            break;
                      
            case 'f':
                        framesize 
            = atoi(optarg);
                        
            break;
                      
            case 'c':
                        channels 
            = atoi(optarg);
                        
            break;
                    }

                }

                
            if (!(mode = celt_mode_create(rate, framesize, &tmp))) {
                    fprintf(stderr, 
            "error: celt_mode_create: %s\n", celt_strerror(tmp));
                    
            return 1;
                }

                
            if (!(state = celt_decoder_create_custom(mode, channels, &tmp))) {
                    fprintf(stderr, 
            "error: celt_decoder_create_custom: %s\n", celt_strerror(tmp));
                    celt_mode_destroy(mode);
                    
            return 1;
                }

             
                
            for (len = 0;;) {
                    
            if (!len) {
                        
            if (read(STDIN_FILENO, &len, sizeof(len)) != sizeof(len)) {
                            
            break;
                        }

                        
            if (len > sizeof(data)) {
                            fprintf(stderr, 
            "error: celt packet larger than buffer\n");
                            celt_decoder_destroy(state);
                            celt_mode_destroy(mode);
                            
            return 1;
                        }

                        rem 
            = len;
                    }

                    
            if ((tmp = read(STDIN_FILENO, data + (len - rem), rem)) < 0{
                        fprintf(stderr, 
            "error: read: %s\n", strerror(errno));
                        celt_decoder_destroy(state);
                        celt_mode_destroy(mode);
                        
            return 1;
                    }

                    
            if (!tmp) {
                        
            break;
                    }

                    
            if (tmp != rem) {
                        rem 
            -= tmp;
                        
            continue;
                    }

                    
            if ((tmp = celt_decode(state, (void *)data, len, pcm, framesize)) < 0{
                        fprintf(stderr, 
            "error: celt_decode: %s\n", celt_strerror(tmp));
                        celt_decoder_destroy(state);
                        celt_mode_destroy(mode);
                        
            return 1;
                    }

                    len 
            = 0;
                    
            if (write(STDOUT_FILENO, pcm, sizeof(*pcm) * framesize * channels) < 0{
                        fprintf(stderr, 
            "error: write: %s\n", strerror(errno));
                        celt_decoder_destroy(state);
                        celt_mode_destroy(mode);
                        
            return 1;
                    }

                }

             
                celt_decoder_destroy(state);
                celt_mode_destroy(mode);
             
                
            return 0;
            }



            編碼:
            #include <stdio.h>
            #include 
            <stdlib.h>
            #include 
            <stdint.h>
            #include 
            <string.h>
            #include 
            <unistd.h>
            #include 
            <errno.h>
             
            #include 
            "celt.h"
             
            int
            main(
            int argc, char **argv) {
                
            short pcm[2048= { };
                
            char data[2048= { };
                
            int rate        = 48000;
                
            int framesize   = 960;
                
            int channels    = 1;
                
            int bitrate     = 0;
                
            int variable    = 0;
                
            int prediction  = 2;
                
            int complexity  = 10;
                
            int tmp;
                
            int rem;
                
            void *mode;
                
            void *state;
                uint16_t len;
             
                
            while ((tmp = getopt(argc, argv, "r:f:c:b:vp:x:")) != -1{
                    
            switch (tmp) {
                      
            case 'r':
                        rate 
            = atoi(optarg);
                        
            break;
                      
            case 'f':
                        framesize 
            = atoi(optarg);
                        
            break;
                      
            case 'c':
                        channels 
            = atoi(optarg);
                        
            break;
                      
            case 'b':
                        bitrate 
            = atoi(optarg);
                        
            break;
                      
            case 'v':
                        variable 
            = 1;
                        
            break;
                      
            case 'p':
                        prediction 
            = atoi(optarg);
                        
            break;
                      
            case 'x':
                        complexity 
            = atoi(optarg);
                        
            break;
                    }

                }

                
            if (!(mode = celt_mode_create(rate, framesize, &tmp))) {
                    fprintf(stderr, 
            "error: celt_mode_create: %s\n", celt_strerror(tmp));
                    
            return 1;
                }

                
            if (!(state = celt_encoder_create_custom(mode, channels, &tmp))) {
                    fprintf(stderr, 
            "error: celt_encoder_create_custom: %s\n", celt_strerror(tmp));
                    celt_mode_destroy(mode);
                    
            return 1;
                }

                
            if (bitrate && celt_encoder_ctl(state, CELT_SET_BITRATE(bitrate)) != CELT_OK) {
                    fprintf(stderr, 
            "error: celt_encoder_ctl: CELT_SET_BITRATE: bitrate request failed\n");
                    celt_encoder_destroy(state);
                    celt_mode_destroy(mode);
                    
            return 1;
                }

                
            if (variable && celt_encoder_ctl(state, CELT_SET_VBR(variable)) != CELT_OK) {
                    fprintf(stderr, 
            "error: celt_encoder_ctl: CELT_SET_VBR: vbr request failed\n");
                    celt_encoder_destroy(state);
                    celt_mode_destroy(mode);
                    
            return 1;
                }

                
            if (celt_encoder_ctl(state, CELT_SET_PREDICTION(prediction)) != CELT_OK) {
                    fprintf(stderr, 
            "error: celt_encoder_ctl: CELT_SET_PREDICTION: prediction request failed\n");
                    celt_encoder_destroy(state);
                    celt_mode_destroy(mode);
                    
            return 1;
                }

                
            if (celt_encoder_ctl(state, CELT_SET_COMPLEXITY(complexity)) != CELT_OK) {
                    fprintf(stderr, 
            "error: celt_encoder_ctl: CELT_SET_COMPLEXITY: complexity 0 through 10 is only supported\n");
                    celt_encoder_destroy(state);
                    celt_mode_destroy(mode);
                    
            return 1;
                }

             
                
            for (len = 0;;) {
                    
            if (!len) {
                        len 
            = sizeof(*pcm) * framesize * channels;
                        
            if (len > sizeof(pcm)) {
                            fprintf(stderr, 
            "error: pcm frame larger than buffer\n");
                            celt_encoder_destroy(state);
                            celt_mode_destroy(mode);
                            
            return 1;
                        }

                        rem 
            = len;
                    }

                    
            if ((tmp = read(STDIN_FILENO, (void *)pcm + (len - rem), rem)) < 0{
                        fprintf(stderr, 
            "error: read: %s\n", strerror(errno));
                        celt_encoder_destroy(state);
                        celt_mode_destroy(mode);
                        
            return 1;
                    }

                    
            if (!tmp) {
                        
            break;
                    }

                    
            if (tmp != rem) {
                        rem 
            -= tmp;
                        
            continue;
                    }

                    
            if ((tmp = celt_encode(state, pcm, framesize, (void *)data, sizeof(data))) < 0{
                        fprintf(stderr, 
            "error: celt_encode: %s\n", celt_strerror(tmp));
                        celt_encoder_destroy(state);
                        celt_mode_destroy(mode);
                        
            return 1;
                    }

                    len 
            = tmp;
                    
            if (write(STDOUT_FILENO, &len, sizeof(len)) < 0 || write(STDOUT_FILENO, data, len) < 0{
                        fprintf(stderr, 
            "error: write: %s\n", strerror(errno));
                        celt_encoder_destroy(state);
                        celt_mode_destroy(mode);
                        
            return 1;
                    }

                    len 
            = 0;
                }

             
                celt_encoder_destroy(state);
                celt_mode_destroy(mode);
             
                
            return 0;
            }


            posted on 2013-02-10 13:09 楊粼波 閱讀(1775) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            一级女性全黄久久生活片免费 | 久久亚洲日韩看片无码| 国产成人精品久久综合 | 996久久国产精品线观看| 久久香蕉国产线看观看乱码| 99久久国产热无码精品免费久久久久 | 国产三级观看久久| 亚洲AV无码成人网站久久精品大| 久久久国产精品福利免费| 青青草原综合久久大伊人导航 | 国产成人无码精品久久久久免费| 亚洲国产精品无码久久久久久曰| 久久久久女人精品毛片| 久久精品国产一区二区| 亚洲AV无一区二区三区久久| 久久国产热这里只有精品| 色综合久久久久无码专区| 久久精品三级视频| 国产精品久久影院| AV无码久久久久不卡蜜桃| 久久久99精品成人片中文字幕| 亚洲AV乱码久久精品蜜桃| 无码8090精品久久一区| 精品一区二区久久久久久久网站| 四虎国产精品成人免费久久| 久久精品国产亚洲AV不卡| 久久中文字幕一区二区| 97久久国产综合精品女不卡 | 99久久精品免费看国产一区二区三区| 日本精品久久久久中文字幕8| 久久精品国产亚洲av麻豆小说| 久久人人爽人人爽人人片av麻烦 | 亚洲愉拍99热成人精品热久久| 久久婷婷五月综合色99啪ak| 99re这里只有精品热久久| 久久棈精品久久久久久噜噜| 亚洲国产高清精品线久久| 亚洲国产天堂久久久久久| 欧美大战日韩91综合一区婷婷久久青草| 久久亚洲精品中文字幕三区| 精品精品国产自在久久高清|