• <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>

            牽著老婆滿街逛

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

            CELT編碼解碼

            轉載自: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 楊粼波 閱讀(1764) 評論(0)  編輯 收藏 引用

            99精品久久久久中文字幕| 久久99精品国产麻豆不卡| 日本久久久久亚洲中字幕| 99久久99这里只有免费的精品| 欧美激情精品久久久久| 久久精品国产精品亚洲| 久久无码人妻一区二区三区午夜| 久久综合九色综合97_久久久| 久久这里只有精品视频99| 久久夜色精品国产噜噜麻豆| 国内精品久久久久久不卡影院| 91精品无码久久久久久五月天| 国产精品99久久精品爆乳| 久久久无码精品亚洲日韩京东传媒 | 99re久久精品国产首页2020| 久久精品视屏| 国产精品久久久久久久| 欧美日韩久久中文字幕| 久久av高潮av无码av喷吹| 久久久久久久97| 国产激情久久久久久熟女老人| 99久久综合狠狠综合久久| 久久精品天天中文字幕人妻| 亚洲精品97久久中文字幕无码| 99久久国产亚洲高清观看2024| 国产精品久久一区二区三区| 狠狠色狠狠色综合久久| 97视频久久久| 亚洲国产精品一区二区三区久久 | 成人久久久观看免费毛片| 亚洲人成网亚洲欧洲无码久久| 天天做夜夜做久久做狠狠| 国产精品亚洲美女久久久| 91性高湖久久久久| 色综合久久最新中文字幕| 久久精品免费一区二区三区| 国产精品久久国产精品99盘| 91久久精品91久久性色| 成人妇女免费播放久久久| 国内精品久久久久影院一蜜桃| 久久精品aⅴ无码中文字字幕不卡 久久精品aⅴ无码中文字字幕重口 |