Linux API2014. 11. 19. 10:48
리눅스에서 옵션으로 -h 나 --help 같이 두가지 옵션으로 주는 것을 처리해주는 api 인데
직접 작성해 본게 아니라 일단.. 이정도만 정리...

struct option declared in <getopt.h> as

struct option {
    const char *name;
    int         has_arg;
    int        *flag;
    int         val;

extern char *optarg;
extern int optind, opterr, optopt;
 
int getopt_long(int argc, char * const argv[],
           const char *optstring,
           const struct option *longopts, int *longindex);

optstring is a string containing the legitimate option characters. If such a character is followed by a colon, the option requires an argument, so getopt() places a pointer to the following text in the same argv-element, or the text of the following argv-element, in optarg. Two colons mean an option takes an optional arg; if there is text in the current argv-element (i.e., in the same word as the option name itself, for example, "-oarg"), then it is returned in optarg, otherwise optarg is set to zero. This is a GNU extension. If optstring contains W followed by a semicolon, then -W foo is treated as the long option --foo. (The -W option is reserved by POSIX.2 for implementation extensions.) This behavior is a GNU extension, not available with libraries before glibc 2. 
 
[링크 : http://linux.die.net/man/3/getopt_long


-D 는 옵션을 필요로 하는 녀석이라 :가 붙게 되어 D:가 기재되고
optarg에 해당 문자의 포인터가 들어가게 되어 strdup나 atoi 등을 이용해서 인자를 사용하게 된다.
int main(int argc, char *argv[])
{
        struct option long_option[] =
        {
                {"help", 0, NULL, 'h'},
                {"device", 1, NULL, 'D'},
                {"rate", 1, NULL, 'r'},
                {"channels", 1, NULL, 'c'},
                {"frequency", 1, NULL, 'f'},
                {"buffer", 1, NULL, 'b'},
                {"period", 1, NULL, 'p'},
                {"method", 1, NULL, 'm'},
                {"format", 1, NULL, 'o'},
                {"verbose", 1, NULL, 'v'},
                {"noresample", 1, NULL, 'n'},
                {"pevent", 1, NULL, 'e'},
                {NULL, 0, NULL, 0},
        };
 
       while (1) {
                int c;
                if ((c = getopt_long(argc, argv, "hD:r:c:f:b:p:m:o:vne", long_option, NULL)) < 0)
                        break;
                switch (c) {
                case 'h':
                        morehelp++;
                        break;
                case 'D':
                        device = strdup(optarg);
                        break;
                case 'r':
                        rate = atoi(optarg);
                        rate = rate < 4000 ? 4000 : rate;
                        rate = rate > 196000 ? 196000 : rate;
                        break;
                }

[링크 : http://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2pcm_8c-example.html

[링크 : http://forum.falinux.com/zbxe/?mid=C_LIB&page=3&document_srl=408382] getopt()
[링크 : http://forum.falinux.com/zbxe/index.php?document_srl=519764&mid=C_LIB] getopt_long()
[링크 : http://linux.die.net/man/3/getopt]
[링크 : http://linux.die.net/man/3/getopt_long]

'Linux API' 카테고리의 다른 글

lirc - linux IR Remote control  (0) 2015.03.31
vaapi vdpau uvd  (6) 2015.03.26
linux 최대 thread 갯수  (0) 2015.01.22
공유메모리  (0) 2014.09.02
timeval, gettimeofday()  (0) 2013.08.20
Posted by 구차니
Linux API/alsa2014. 11. 18. 10:35
alsa의 latency.c를 실행하다 보니
깔끔하게 상태를 출력해주는 녀석이 있어서 찾아보게 됨.

Hardware PCM card 0 'mxs-evk' device 0 subdevice 0
Its setup is:
  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 16000
  exact rate   : 16000 (16000/1)
  msbits       : 16
  buffer_size  : 128
  period_size  : 64
  period_time  : 4000
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 64
  period_event : 0
  start_threshold  : 2147483647
  stop_threshold   : 128
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824 


snd_pcm_dump(phandle, output);
snd_pcm_dump(chandle, output);
fflush(stdout); 


[링크 : http://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m___dump.html#...1d8d]

----


  state       : RUNNING
  trigger_time: 2130.83093753
  tstamp      : 2160.96375002
  delay       : 48
  avail       : 16
  avail_max   : 44 

snd_output_t *output = NULL;
err = snd_output_stdio_attach(&output, stdout, 0);
if (err < 0) {
        printf("Output failed: %s\n", snd_strerror(err));
        return 0;
}
 
void showstat(snd_pcm_t *handle, size_t frames)
{
        int err;
        snd_pcm_status_t *status;
        snd_pcm_status_alloca(&status);
        if ((err = snd_pcm_status(handle, status)) < 0) {
                printf("Stream status error: %s\n", snd_strerror(err));
                exit(0);
        }
        printf("*** frames = %li ***\n", (long)frames);
        snd_pcm_status_dump(status, output);
}

[링크 : http://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2latency_8c-example.html]  


[링크 : http://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m___dump.html#...a51]
[링크 : http://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m___dump.html]

'Linux API > alsa' 카테고리의 다른 글

alsa timestamp  (0) 2014.11.26
alsa async  (0) 2014.11.26
ALSA 드라이버 관련  (0) 2014.11.17
alsa 함수 - size / time  (0) 2014.11.17
alsa low latency  (0) 2014.11.03
Posted by 구차니
MPLAYER 쪽에서는 ESD, PULSE, JACK을 켜주면 가능할 것 같다

Audio output:
  --disable-alsa         disable ALSA audio output [autodetect]
  --disable-ossaudio     disable OSS audio output [autodetect]
  --disable-arts         disable aRts audio output [autodetect]
  --disable-esd          disable esd audio output [autodetect]
  --disable-pulse        disable Pulseaudio audio output [autodetect]
  --disable-jack         disable JACK audio output [autodetect]
  --disable-openal       disable OpenAL audio output [autodetect]
  --disable-nas          disable NAS audio output [autodetect]
  --disable-sgiaudio     disable SGI audio output [autodetect]
  --disable-sunaudio     disable Sun audio output [autodetect]
  --disable-kai          disable KAI audio output [autodetect]
  --disable-dart         disable DART audio output [autodetect]
  --disable-win32waveout disable Windows waveout audio output [autodetect]
  --disable-coreaudio    disable CoreAudio audio output [autodetect]
  --disable-select       disable using select() on the audio device [enable] 


[링크 : http://blog.wonderwall.me/?p=272]
[링크 : http://mpd.wikia.com/wiki/PulseAudio]

'프로그램 사용 > ffmpeg & ffserver' 카테고리의 다른 글

mplayer status line  (0) 2015.01.26
FAAD / FAAC  (0) 2015.01.23
ffserver.conf 설정법  (0) 2014.11.06
Mplayer 캐시 설정  (0) 2014.11.06
Mplayer 1.1 / ffmpeg 0.10.2 git  (0) 2014.10.22
Posted by 구차니
회사일2014. 11. 18. 08:30
Freescale문서에 FSL의 약자가 먼가했더니 -_-
FreeScaLe이 아니라서 다행인가? ㅋㅋㅋ

[링크 : http://finance.yahoo.com/q?s=FSL]

'회사일' 카테고리의 다른 글

HD-AHD / HD-TVI / HD-CVI / EX-SDI  (0) 2015.04.16
ltib - linux target image builder  (0) 2014.11.24
pulseaudio / jack / sound server  (0) 2014.11.16
ADAT - Alesis Digital Audio Tape  (0) 2014.11.03
ECR ECO ECN  (0) 2014.09.02
Posted by 구차니
Linux API/alsa2014. 11. 17. 17:45

'Linux API > alsa' 카테고리의 다른 글

alsa async  (0) 2014.11.26
alsa debug function  (0) 2014.11.18
alsa 함수 - size / time  (0) 2014.11.17
alsa low latency  (0) 2014.11.03
SALSA - Small ALSA  (0) 2014.10.24
Posted by 구차니
Linux API/alsa2014. 11. 17. 17:41
size는 frame 단위
time은 usec 단위


period던 buffer 던 동일한 단위로 설정이 된다. 

'Linux API > alsa' 카테고리의 다른 글

alsa debug function  (0) 2014.11.18
ALSA 드라이버 관련  (0) 2014.11.17
alsa low latency  (0) 2014.11.03
SALSA - Small ALSA  (0) 2014.10.24
alsa + ffmpeg 벤치마크(?)  (0) 2014.10.23
Posted by 구차니
해당 파일을 남겨야 한다면
1. 파일 이름 변경
2. svn del 파일이름
3. 파일 이름 복구

해당 파일을 남길 필요가 없다면
1. svn del 파일이름

[링크 : https://kldp.org/node/52211]


+ 혹시나 해서 테스트 한 내용 백업파일을 만들어 두길 잘했지 ㅋㅋ
아무튼 svn del을 하면 해당 파일을 삭제하게 되니 주의요망!
$ svn st
?       libliveMedia.a.bak
A       libliveMedia.a

$ ll libliveMedia.a* 
-rw-r--r--  1 minimonk minimonk 1489620 2014-11-17 09:13 libliveMedia.a
-rw-r--r--  1 minimonk minimonk 1489620 2014-11-17 09:14 libliveMedia.a.bak

$ svn del --force libliveMedia.a
D         libliveMedia.a

$ ll libliveMedia.a*
-rw-r--r-- 1 minimonk minimonk 1489620 2014-11-17 09:14 libliveMedia.a.bak

$ svn st
?       libliveMedia.a.bak 

 
Posted by 구차니
회사일2014. 11. 16. 15:12
사운드 서버는
말그대로.. 사운드 카드 서버(?) 라고 해야 하려나?
네트워크를 통해 여러개의 사운드 카드를 장착해서 믹싱하거나
독립적으로 재생하는 등 네트워크를 통해 사운드 카드에 소리를 보내는 역활을 하며
low latency를 추구하는 프로그램이다.

아무튼.. 가장 유명한걸로는 pulseaudio와 jack이 있는데
JACK은 펄스오디오에서 추가적으로 사용가능한 프로토콜식으로 포함되어 있다고 한다.

[링크 : http://www.freedesktop.org/wiki/Software/PulseAudio/]
[링크 : http://en.wikipedia.org/wiki/PulseAudio]
[링크 : http://en.wikipedia.org/wiki/JACK_Audio_Connection_Kit]

'회사일' 카테고리의 다른 글

ltib - linux target image builder  (0) 2014.11.24
FSL - Freescale Semiconductor, Ltd.  (0) 2014.11.18
ADAT - Alesis Digital Audio Tape  (0) 2014.11.03
ECR ECO ECN  (0) 2014.09.02
CD 굽는 컴퓨터  (4) 2012.11.20
Posted by 구차니
Linux2014. 11. 13. 08:53
리눅스 커널 패닉시 자동으로 리부팅 하도록 하는 부분인데..
생각해보면 윈도우도 기본으로 리부팅은 안하니 크게 문제 될 일은 아닌거 같기도 하고..

/proc/sys/kernel$ ll panic*
-rw-r--r-- 1 root root 0 2014-11-13 08:56 panic
-rw-r--r-- 1 root root 0 2014-11-13 08:56 panic_on_io_nmi
-rw-r--r-- 1 root root 0 2014-11-13 08:56 panic_on_oops
-rw-r--r-- 1 root root 0 2014-11-13 08:56 panic_on_unrecovered_nmi 

/proc/sys/kernel$ cat panic*
0
0
0
0 

$ vi /etc/sysctl.conf
kernel.panic = 3 

[링크 : http://unix.stackexchange.com/questions/29567/configure-reboot-on-linux-kernel-panic]

'Linux' 카테고리의 다른 글

timezone  (0) 2014.11.21
dd 출력파일 자르지 않기  (0) 2014.11.20
avahi  (0) 2014.11.10
unknown filesystem type linux_raid_member / RAID 하드 마운트하기  (0) 2014.09.22
ps / top 차이점?  (0) 2014.09.17
Posted by 구차니
내일은 춥겠구나..


그리고 .. 벌써 취업한지 세달 -13일 전
시간 참 빠르다..

이제 수습도 끝나가니 열심히 일해야지 

'개소리 왈왈 > 직딩의 비애' 카테고리의 다른 글

멀 해야 하려나...  (0) 2015.01.02
2015년 계획  (0) 2015.01.01
다음주 부터 출근..  (4) 2014.08.21
아직도 퇴사가 된게 아니었나?  (4) 2014.08.20
취업  (0) 2014.08.14
Posted by 구차니