박스 개봉기는 http://antinuke.blog.me/221135908391.

유심을 꽂고 부팅하면 여느 폰처럼 잘 인식된다. 단, HD voice 서비스가 해제되었고, 통화 품질에 대해 책임 안지네 어쩌네 하는 문자메시지를 다량 받게 된다. kt 홈페이지 접속해서 마이페이지의 가입정보를 확인해보면, open model 2로 등록되어있는데, 이걸 변경하면 된다는 글을 찾아보고 고객센터에 전화하여 IMEI와 WiFi MAC 어드레스를 알려주니 open model2 에서 PTA-TYPE3HD로 변경되었다. (이부분은 구글링을 통해 http://ruinses.tistory.com/858 글을 참조했음)

 

재부팅을 해주고 나니 통화할때 3G로 뜨던게 H+로 그대로 있고 음질도 훨씬 좋아졌다. 다만 딸내미가 사용중인 요금제가 3G요금제라, volte는 확인을 할 수가 없네..

 

그리고, WiFi Mac 주소를 등록한 후 Olleh WiFi 자물쇠 없는 걸 찾아 등록해두니 이후부터는 와이파이 존에서도 잘 붙는다.

Posted by 켄아자씨
,
Posted by 켄아자씨
,

http://antinuke.blog.me/221029949247

 

어렵다 어려워. 라이센스 문제로 MX Player에서 DTS 오디오 재생이 안된다. 이 DTS 코덱을 스마트폰 적당한 곳에 zip파일 형태 그대로 저장한 후, MXPlayer를 실행하고MX Player - 설정 - 디코더 항목의 맨아래 외부코덱 선택하고 zip 파일을 저장한 폴더를 선택하면, MX Player를 재시작한다고 토스트가 뜨고 잠시후에 MX Player가 재 시작된다. 이제 외부코덱으로 동작하며, DTS Audio도 문제없이 디코딩된다.

 

첨부한 코덱 파일의 출처는 : https://forum.xda-developers.com/apps/mx-player/mx-player-custom-codec-dts-support-t2156254

Posted by 켄아자씨
,

상당한 할인 혜택을 버리고 LTE 요금제로 변경했다..

5회선 묶어 월 12000원씩 할인받았었는데.. 흑... 이제 2천원이나 되려나.. 할인액이..

 

속도? 그런게 문제가 아니라, 커버리지의 문제다. 요즘 세상에 휴대전화가 안 터지는 곳이 있다니.. 3G 음영이 많아졌다는 느낌이 든지는 꽤 되었는데, 드뎌 폭발.. 삼봉 자연휴양림에 갔었는데, LTE 요금제 쓰는 가족들은 다 빵빵 잘 터지는데, 우리 식구 3G 전화는 죄다 먹통.. 데이터는 고사하고 전화도 안된다..

그래.. 뭐.. 휴양림이야 그렇다고 치자... 후배 집들이 때문에 갔던 대전 시내 아파트에서 데이터 먹통.. 서울 성수동에서도 간당간당 붙어 동작하는 3G... 대전은 몰라도 서울 성수동은 처가라 자주 가는 편인데 신고접수를 하니 중계기를 집안에다 달아준다는데.. 미관상도 그렇고 얼마 안된다지만 개인집 전기를 이용하려하는게 기분 상해서 안 한다고 했다..

극렬하게 항의하고 난리 치고 진상 부려야 하나 하다가 져버렸다...

그냥 모두 LTE 요금제로 가는걸로 결정.. 그 결정 하나로 가족 통신요금이 최소한 4만원 이상은 증가하겠네..

Posted by 켄아자씨
,

이전 관련 포스팅 링크 : http://antinuke.blog.me/220857644168

 

크롬에서는 데이터 절약 모드라는 것을 사용할 수 있는데, 이 데이터 절약 모드를 사용하면 웹서핑할때 3G나 LTE 사용량을 좀 줄일 수 있다. 그러나, 이 모드를 이용하면, 모든 페이지는 구글의 서버를 거쳐서 모바일에 적합하도록 최적화되어 폰으로 전송되는 형태로 작동한다. 이때 데이터가 좀 압축이 되고 이걸로 인해 데이터 절약이 되는 것이다. 단, 보안페이지(https)는 이런 과정을 거치지 않고 전송되므로 큰 절약이 되지는 않는다.

 

자.. 이렇게 데이터 절약모드를 하면 생기는 부작용이 몇가지 있는데 대략 지금껏 발견된 것은 다음과 같다.

1. 일부 웹하드 사이트에서 댓글이나 덧글 등을 달때 반응이 없다.. ㅜㅜ 실행이 안되네. 아마 일부 자바스크립트 같은 것의 실행이 좀 제한 되는 듯. 이런 사이트에서는 잠시 절약모드 풀고 사용해야 한다.

2. 다음이나 일부 국내 동영상 사이트들의 경우, 특정 국가에서만 재생되도록 설정된 영상은 재생이 안된다. "해당 국가에서 재생이 불가능합니다"라고 뜰것이다. 구글 본사쪽의 서버로 데이터가 경유되서 오느라 그러는 듯.

 

https 아닌 웹 사이트 서핑을 많이 할 때는 상당히 데이터 절약이 된다.

 

와이파이 사용할때는 딱히 데이터 절약할 필요가 없으므로, 끄고 사용하는게 좀더 브라우징 속도엔 도움이 될 수도 있다. 아무래도 서버 경유하느라 평소에 네트워크 상황에 따라 약간 브라우징 속도가 좀 답답할 수 있는 단점이 있다.

 

 

Posted by 켄아자씨
,

아오.. 이거 땜에 쓰댕. 괜히 쌩쑈했는데 아주 간단히 해결함.

 

1. SystemClock_Config()함수 overriding

:

:

HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000000);

 

 

2. HAL_IncTick() 함수 overriding

__IO uint32_t usTick=0;
extern __IO uint32_t uwTick;

void HAL_IncTick(void)
{
  usTick++;
  if (usTick==1000)
  {
    uwTick++;
    usTick=0;
  }
}

 

요렇게 해주면 HAL_Delay 등의 함수들이 틀어지지 않고 정상 동작하고, 1microsecond 단위의 tick 처리가 가능하다.

 

Posted by 켄아자씨
,

0. 목표

ffmpeg을 통해 다음의 입력 음원 소스를 alsa device로 출력한다.

- 입력 음원 소스 : rtsp://server/mediafile

* media format : mp3, wav, pcm

* 출력 포맷 : 16bit 8kHz Mono PCM


1. 기본 configure 및 build


#./configure --cross-prefix=arm-none-linux-gnueabi- --disable-decoders --disable-yasm --disable-encoders --enable-encoder='pcm_mulaw, pcm_s16le, pcm_s16be'  --enable-decoder='pcm_mulaw, mp3, pcm_s16le, pcm_s16be' --disable-protocols --disable-filters --disable-muxers --disable-demuxers --disable-parsers --arch=arm --enable-cross-compile --target-os=linux --cc=arm-none-linux-gnueabi-gcc --enable-pthreads --disable-bsfs --disable-doc --prefix=${PWD}/../usr --disable-swscale --enable-ffmpeg --enable-ffplay --enable-protocol='rtsp, rtp,file' --enable-muxer='mp3, pcm-mulaw, rtsp, wav, alsa' --enable-demuxer='mp3, rtsp, pcm-mulaw, wav, alsa' --enable-bsf='mp3_header_decompress' --enable-outdev='alsa' --enable-indev='alsa' --extra-cflags='-I/home/ryu.seeyeol/dm365/ti-dvsdk_dm365-evm_4_02_00_06/linux-devkit/arm-none-linux-gnueabi/usr/include' --extra-ldflags='-L/home/ryu.seeyeol/dm365/ti-dvsdk_dm365-evm_4_02_00_06/linux-devkit/arm-none-linux-gnueabi/usr/lib' --extra-libs='-lasound' --enable-filter='aresample' --arch=armv5te  --disable-runtime-cpudetect --disable-neon --disable-armv6 --disable-armv6t2 --enable-avresample --enable-hardcoded-tables


2. 실행

- local mp3 음원을 16bit 8kHz mono로 출력하기

* 타겟 보드에 ffmpeg을 복사해 넣고, 실행

# ./ffmpeg -i test.mp3 -acodec pcm_s16le -ac 1 -ar 8000 -f alsa ""


- rtsp 서버에서 mp3를 스트리밍해서 16bit 8kHz mono로 출력하기

#./ffmpeg -i rtsp://server/test.mp3 -acodec pcm_s16le -ac 1 -ar 8000 -f alsa ""


잘 된다.


다만, latency가 엄청나고, 시스템 부하가 좀 올라가면 출력 품질이 형편없다... 뭐 어차피 16bit 8kHz mono 출력이니 기대도 없다.

 

2016년 5월 4일 글..  http://antinuke.blog.me/220700909836

'이런저런 것들 > 리눅스' 카테고리의 다른 글

rtspclient 만들기..  (0) 2016.12.01
오픈스택 스위프트 스토리지 설치 최종 정리  (0) 2016.11.24
Swift Storage 설치 및 설정  (0) 2016.11.24
Swift 설치하기  (0) 2016.11.24
DM365 보드에서 ffmpeg 설정  (0) 2016.11.24
Posted by 켄아자씨
,

아오.. 하오 오래전에 깨작거려놓은거라 생각이 안나는데...

 

오디오 방송 서버와 클라이언트를 만들어야 할 일이 있어서 급히 뒤적거리고 뚝딱거려서 만들어 봤다..

 

작업환경은 ubuntu 14.04LTS 32bit version,

타겟은 dm365보드였는데... ti-dvsdk_dm365-evm_4_02_00_06 버젼이니 참조하고..

 

http://www.live555.com/liveMedia/ 에서 library 소스 가져다 dm365에 맞춰서 configuration 하고 빌드한 후 라이브러리 가져다 오디오만 처리하도록 만들었는데.. 간단한 음성 방송 송신/수신만 하면 되고, dm365로 구성한 보드에 오디오 path도 adpcm 밖에 없어서 구현 하다 중단한 것으로 기억하는데.. 중요한건.. rtsp 서버에 접속해서 플레이하면... ㅎㅎㅎ 동작은 한다.. ^^;;

 

rtsp 서버는 http://www.live555.com/mediaServer/ 에 있는 pre-built 실행파일을 받아서 사용했고 (윈도용, 리눅스용 다 있음.)

 

 

client (2).zip

암호는 본문 맨 아래에..

 

Makefile은... 부득이하게 fullpath 참조하도록 만들어진터라..(디렉토리명에 개발자 이름이...) 빼고.. 소스만 압축되어 있으며,그 내용은 대략 아래와 같으니 참조만.. (~는 /home/사용자계정 디렉토리)

 

CROSS_COMPILER_PREFIX=arm-none-linux-gnueabi-
PREFIX_DIR=~/usr

INCDIR=${PREFIX_DIR}/include
LIBDIR=${PREFIX_DIR}/lib

GPP=${CROSS_COMPILER_PREFIX}g++
GCC=${CROSS_COMPILER_PREFIX}gcc
STRIP=$(CROSS_COMPILER_PREFIX)strip

INC_LIVEMEDIA_DIR=-I${INCDIR}/liveMedia -I${INCDIR}/groupsock  -I${INCDIR}/BasicUsageEnvironment -I${INCDIR}/UsageEnvironment
INC_BASE_DIR=~/dm365/ti-dvsdk_dm365-evm_4_02_00_06/linux-devkit/arm-none-linux-gnueabi/usr/include
LIB_BASE_DIR=~/dm365/ti-dvsdk_dm365-evm_4_02_00_06/linux-devkit/arm-none-linux-gnueabi/usr/lib

CFLAGS_BASE=-I. -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -Wall -DBSD=1 -I$(INC_BASE_DIR)
LFLAGS_BASE =-L$(LIB_BASE_DIR)
LDFLAGS_BASE=-lpthread -lasound ${LIBDIR}/libliveMedia.a ${LIBDIR}/libgroupsock.a ${LIBDIR}/libBasicUsageEnvironment.a ${LIBDIR}/libUsageEnvironment.a

CFLAGS=${CFLAGS_BASE} ${INC_LIVEMEDIA_DIR}

all: rtspclient

rtspclient: rtspclient.cpp server.c
 ${GPP} -g -o $@ rtspclient.cpp server.c $(CFLAGS_BASE) $(INC_LIVEMEDIA_DIR) -L$(LIBDIR) $(LFLAGS_BASE) $(LDFLAGS_BASE)

install: rtspclient
 $(STRIP) rtspclient
 cp rtspclient $(PREFIX_DIR)/bin/

clean:
 rm -f rtspclient

 

 

 

코드는... liveMedia 소스내의 testProgs 내의 파일들을 참조하고 여기저기서 구글링 해서 짜깁기 해서 만들어서 예쁘진 않고.. 작업한지 좀 지난지라 기억도 잘 안나서... 사용 방법은 빌드 후 나온 실행파일인 rtspclient를 target board에 넣고

 

./rtspclient 서버주소 만 해주면 되었던 걸로 기억..

 

live555MediaServer는 실행 파일이 있는 디렉토리를 /로 하고 이하의 디렉토리의 음원 파일의 이름을 그대로 url로 사용할 수 있다.

 

예를 들어.. 음원 서버가 192.168.100.99라고 하고, /home/antinuke/media_server 디렉토리 밑에 다음과 같이 파일이 구성되어있다면.. 서버의 실행은 antinuke@192.168.100.99:~/media_server/$ ./live555MediaServer & 이렇게 실행하면 되고..

 

+ home + antinuke + media_server + media_files + test.wav

                                               |                 + test1.wav

                                               |                 + test2.wav

                                               |                 + test3.wav

                                               + live555MediaServer

                                               + mp3_files + song1.mp3

                                                               + song2.mp3

 

 

클라이언트에서 접속 url은 rtsp://192.168.100.99/media_files/test.wav, 또는 rtsp://192.168.100.99/mp3_files/song1.mp3 와 같이 하면 된다.

 

단... 앞에도 얘기했듯... rtsp 기본 포트인 554로 live555MediaServer가 구동되었다면 포트를 생략해도 되지만, 8554로 구동되었으면, 주소뒤에 포트를 표시해주어야 한다. 즉, rtsp://192.168.100.99:8554/media_files/test.wav 혹은 rtsp://192.168.100.99:8554/mp3_files/song1.mp3 처럼 해야 한다.

 

첨부한 소스는 이 live555MediaServer가 실행되었을때 어느 포트로 구동되었는지 알 수가 없으므로, 자동으로 두 포트 모두 open해서 접속에 성공한 thread만 재생하고 실패한 thread는 바로 종료되도록 해놨다.. 귀차니즘으로 인한 잔머리... ㅎㅎ

 

일단 나만 참조할 메모지만 혹시 비슷한 걸로 고생하시는 분 있으면 쪼금이라도 참조라도 되었으면 해서..

 

 

압축파일 비번은 1234 ... 코드가 지저분해서 부끄럽기에.

Posted by 켄아자씨
,

http://blog.naver.com/antinuke/220859017933 <- 요 게시물 쓸때는 일할 계산된 상태고 지금은.. ㅎㅎㅎ

 

 

사용중인 요금제느 순 모두다올레34(3G)로 월 1.5GB 데이터(데이터 이월), 185분 무료통화(망내 무선통화 무제한 무료) 등등..

 

할인 내역은... 뭉치면 올레 5회선(3G)으로 회선당 12000원씩 기본, 단말기 할부에 약정 모두 끝나서 추가로 1년간 20% 요금할인 신청해서 6800원 할인, 유무선 합산 어쩌고 해서 또 165원 할인..

 

명의 도용 방지 서비스 990원을 제외하면 15000원대 초반이다 ㅎㅎ

 

그런데 3G 서비스를 죄다 LTE 쪽으로 몰아놨는지 망할 3G 불통 지역이 은근히 많다.. - -;;; 최대한 버텨보다가 LTE요금제로 바꿔야 하나.. ㅜㅜ 그럼 뭉치면 올레 할인액이 2천원 남짓으로 확 줄어드는데 ㅡ.ㅡ;;

 

어차피 LTE 요금제 해도 뻑하면 3G망으로 붙드만, 그럴바엔 LTE 망으로 전환되도 3G 수준의 속도로 쓸 수 있도록 요금제 만들면 좋겠구만..

 

 

 

 

 

Posted by 켄아자씨
,

IT업체에 근무하는데, 후배 직원이 어느날 묻는다..

 

SD카드 128GB를 샀는데, 왜 119GB로 인식되느냐..

 

거... 참... 그래도 IT 업계 종사자인데.. - -;;

 

일단, 하드나 기타 저장매체들의 용량 표시는 왜 그러는지 모르겠지만, 단위가 컴퓨터에서 쓰는 단위랑 다르다.

 

우리가 쓰는 Metric 단위에서는 10의 3승마다 컴머로 구분해서 표시한다.

 

즉, 1, 1000, 100000, 1000000000, 1000000000000 이렇게 단위가 매겨진다..

그래서 10의 3승마다 K(킬로), M(메가), G(기가), T(테라)가 된다.

 

예를 들어, 무게의 경우 1KG=1000G.

 

반면, PC는 기본 단위가 2진수 (on,off)로 처리되고, 2의 10승 마다 단위가 바뀐다. (2^10=1024)

 

즉, 1, 1024, 1024*1024, 1024*1024*1024, 1024*1024*1024*1024,.....

 

자.. 이제 다시 하드로 돌아오면..

 

제조사에서 하드디스크 같은 저장매체 용량을 표시할때도 알 수 없는 이유로.. (알 수야 있지만 알 필요 있나... 귀찮음) Metric 체계를 이용한다. 따라서 제조사에서 말하는 1TB 하드는 1*1000*1000*1000*1000 byte이다.

 

이를 PC에 꽂으면 당연히 PC에서는 2^10인 1024 단위로 계산하여 표시하므로, 

 

1000000000000/(1024*1024*1024*1024) = 0.9094947017729282379150390625....

 

실제로는 0.9테라로 표시된다. 숫자가 작으니 언짢아서..(!) 한 단계 아래 단위로 표시하면

 

931.32257...GB 가 된다.

 

마찬가지로 32GB USB 메모리는 제조사에서는 32*1000*1000*1000의 의미로 표시한 것이고.. PC에 연결하면..

32*1000*1000*1000/(1024*1024*1024) = 29.80GB가 되는 것이다.

 

 

Posted by 켄아자씨
,