All(268)
-
[NDK] Colorspace Conversion 관련 삽질기
이상하게 요즘 삽질을 계속해서 하는 느낌이다. 이번에는 구글의 정책으로 인해 64bits를 지원하도록 NDK 라이브러리를 수정하는 과정에서, Colorspace Conversion의 문제로 삽질을 하게 됐다. 일단 현재 GPU를 사용하지 않고 Colorspace Conversion을 처리하기때문에 성능상에 문제가 있기는 하지만, 어느정도 안정적으로 처리하는 것 까지만 확인하고 삽질기를 작성하기로 했다. 2019년 8월 1일부터 64bits를 지원하지 않는 앱은, 구글 플레이에 업데이트 할 수 없다. NDK를 사용하지 않는다면 상관이 없겠지만, 영상 스트리밍과 관련된 기능을 사용하고 있었기 때문에 필요한 라이브러리를 ARM64-v8a 칩셋에 맞게끔 다시 빌드할 필요가 있었다. 대표적인 예가 바로 FFmpe..
2019.07.04 -
단다라(DANDARA)
이번에 플레이한 게임은 단다라입니다. 스팀 기준 \6970, 매우 긍정적인 평가를 받고 있는 게임입니다. 기존에 상당히 관심있던 게임이었는데, 엑스박스 게임 패스를 결제하면서 무료로 플레이할 수 있는 게임에 포함되어있기에 플레이해봤습니다. 엔딩까지 걸린 시간은 약 6시간 정도입니다. 특징 빠른 속도감을 가진 독특한 이동방식과, 매트로베니아가 가미된 플랫포머 형식의 게임이다. 어렵지 않은 퍼즐과 오브젝트의 조작이 직관적이다. 특정 NPC와 대화하거나 아이템을 입수하기 전에는 조작할 수 없는 오브젝트가 존재하는데, 이런 오브젝트를 조작할 수 있는 방법에 대해 튜토리얼로 설명해주지 않는다. 직접 NPC와 대화하거나 아이템을 입수하기 전까지는, '지금은 움직일 수 없다'는 사실을 깨닫기가 상당히 어려운 편이다...
2019.07.01 -
[Android] Thread와 BlockingQueue에 대한 삽질기록
프로그램을 작성하다보면 여러개의 작업을 병렬로 처리해야 할 경우가 있다. 네트워크를 통해 영상 데이터를 전송받아서, 디코딩한 후 재생하는 경우가 대표적이다. 아무튼 이번에는 BlockingQueue를 사용한 코드를 수정하다가, 몹시 곤혹스러운 상황을 맞딱드리게되서 기록을 남기려고 한다. Thread.wait()이나 Thread.sleep()을 호출하지 않는데도 Thread의 상태가 WAIT으로 변경되고, notify()나 notifyAll(), Thread.start()를 호출하지 않아도 Thread의 상태가 RUNNING으로 변경된다. 내가 작성한 코드라면 금방 단서를 찾을 수 있거나 혹은 이런 경험이 있다면 원인을 찾기 좀 쉬울 것 같은데, 심지어 Thread의 상태를 검색해보면 위에서 언급한 메서드..
2019.06.28 -
REST API를 사용한 폼 베이스 인증(Form Base Authentication)에 다이제스트 인증(Digest Authentication)을 적용하기 #1
주의: 폼 베이스 인증과 다이제스트 인증을 동시에 적용하는 건 큰 의미는 없다.특히 NGINX 등에서 제공하는 기본 인증방식(BASIC/DIGEST)을 사용할 시, 브라우저에서 제공하는 로그인 창이 출력되지 않게 하려면 사용자가 입력한 ID와 패스워드가 URL에 그대로 노출되게된다. 그러니 이러한 구현사항을 요청받았다면, 천천히 포기할 수 있게끔 설득해보도록 하자. 로그인 창으로 ID와 패스워드를 입력하면, 서버에서 임의의 세션값을 생성하여 사용자를 추적하게끔 설계되어있는 시스템이 있다. 즉, 폼 베이스 인증 방식을 사용하고 있었다. 이 시스템에 보안상의 문제가 있다며, 다이제스트 인증 방식을 사용하게끔 해달라는 요청이 들어왔다. 당장 폼 베이스 인증 방식이라는 말이 떠오르지 않았던 나는 잠시 정신이 아..
2019.06.24 -
cURL을 Android에서 사용하기 위해 Shared Library(libcurl.so)로 빌드하기(32bits/64bits/without-ssl)
2019년 8월부터 64bits를 지원하지 않는 앱은 구글 플레이에 등록할 수 없다. 그래서 지금 앱에서 어떤 라이브러리를 사용하고 있는지 확인하니, ffmpeg와 curl을 비롯하여 꽤 많은 라이브러리를 사용하고 있었다. ffmpeg을 어떻게건 빌드하긴 했는데, 64bits 라이브러리를 전부 포함하지 않아서 그런지 정상적으로 영상이 재생되지 않았다. 일단 할 수 있는건 curl을 포함한 나머지 라이브러리를 크로스컴파일하는 방법밖에 없었기에, 무작정 시작해봤다. 이 글에서는 Static Library에 대해서는 다루지 않는다. Android/iOS에서 사용하기 위한 curl을 Static Library로 빌드하기 위해서는, curl-android-ios, gcesarmza 깃허브를 참조하도록 하자. 체크..
2019.06.13 -
[삽질기록] RAW H.264(AVC)에 MP4컨테이너 씌우기 #4 / FFmpeg 재빌드(64bits)
RTP로 전달된 h264, h265 파일을 차곡차곡 RAW데이터로 저장한 뒤, FFmpeg를 이용해서 Muxing해보니 정상적으로 mp4파일이 생성됐다. 재생도 잘 된다. 파일이 생성되지 않는 것 같아서 잠시 당황했었는데, LG G5에서 PC에 파일 전송모드로 연결했을 때 파일을 제대로 표시하지 못하는 문제가 있었다. File Explorer 앱을 이용해서 확인해보니 파일 생성 및 Muxing에는 문제가 없어서, 일단 기능구현이 완성된 후 고민하기로 했다. 2019년 8월부터 64bits를 지원하지 않는 앱은 구글 플레이에 등록 및 업데이트가 불가능하기 때문에, FFmpeg를 다시 빌드하기로 했다. 이전의 빌드 스크립트에서 수정해야 할 곳은 다음과 같다. 이전의 빌드스크립트는 [삽질기록] RAW H.26..
2019.06.10