shared_ptr 객체를 멀티스레드에서 사용할 때 의문점

ByteBuffer 클래스를 만들고 매소드 get, size 선언. private 맴버를 d, s를 두어 아래와같이 구현하였다.

#include <algorithm>

ByteBuffer::ByteBuffer(char *data, int size)
{
    if(size == 0)
    {
        d = nullptr;
        s = 0;
    }
    else if(data == nullptr)
    {
        d = new char[size];
        s = size;
    }
    else
    {
        d = new char[size];
        s = size;

        std::copy(data, data + size, d);
    }
}

ByteBuffer::~ByteBuffer()
{
    delete[] d;
}

char *ByteBuffer::get()
{
    return d;
}

int ByteBuffer::size()
{
    return s;
}

Continue reading shared_ptr 객체를 멀티스레드에서 사용할 때 의문점

최근 NVENC로하고있는 삽질

팀뷰어나 VNC로는 클라이언트에서 하드웨어 가속을 사용하지 못해서인지 모바일에서나 노트북에서나 발열이 좀 많다는게 단점. 특히나 게임은 화면 업데이트 빈도가 높아서인지 팀뷰어가 최적화 잘되어있지만 그래도 사용할 수 있는 대역폭에 비하면 화질이 좋지 못하였다.

아이폰이 GIF를 지원하지않는건 GIF는 하드웨어가속을 사용할 수 없기때문이라는데, 왠지 원격을 H.264로 스트리밍하고 제어한다면 노트북에서도 낮은 프로세서 사용률로 실시간으로 게임도 스트리밍하여 컨트롤 할 수 있지 않을까싶어 거진 2주간 NVENC와 XDGI 삽질을 하였다. DirectX 인터페이스나 미디어 스팩이나 아무것도 모르고 시작해서 지금도 아는게 없는상태에서 그냥 무작정 해보아서 이제야 막 결과가 눈에 들어오는 수준 orz

일단 결과는 간략하게 아래와같다.

%ec%ba%a1%ec%b2%98

인코딩 & 스트리밍 프로그램은 보여지는 화면이 없고 아직 MPEG4의 정상적인 스트리밍 방법을 모르기에 그냥 데이터만 있어도 재생이 되는 ffplay로 인코딩 된 raw 데이터를 바로 뿌려보았다. (파일로 출력하고 ffplay에서 읽도록 하면 거의 0.5초 정도 수준으로 지연이 있지만 tcp로 전송하니 버퍼링이 있어서인지 1초 넘게 지연이 생겨버린다.) 정상적으로 게임 화면이 나타나긴하지만 코딩하며 실행하면서 그래픽 메모리를 잘못 건든것이 있는지 종종 아래처럼 처참하게 깨지는 화면이 나타난다는건 덤.

2016-10-01

도중에 AAC 가속도 재공되는 인텔의 Media Codec을 사용해보려했지만 그건 나중으로 미루고 일단 NVENC를 사용하여 스트리밍하는것 부터 완벽하다 싶으면 건들어봐야겠다. 과연 완성이나 되련지 모르겠지만 완성되면 코드를 공개하던지 해봐야겠다. 아마도 ffmpeg 라이브러리를 사용해서 인코딩 하고 스트리밍 활용하는 방향으로 전환될수도 있지만 그건 나중 문제(…)

아래 화면은 그래픽카드의 비디오 엔진 점유율과 스트리밍 CPU 점유율이다. Continue reading 최근 NVENC로하고있는 삽질

윈도 7 업데이트 (Windows Update) 확인이 오래 걸릴 때 해결법

언제부턴가 윈도 7에서는 업데이트 확인이 오래걸리는 문제가 생겼다.
최근 추석 고향에 내려가서 윈도를 포맷 할 일이 있었는데… 역시나 LG Recovery로 초기화 시킨 윈7마저도 svchost.exe 프로세스 중 하나가 메모리 수백메가 차지하며 CPU 스레드 하나를 전부 먹는 증상이 나타났다.

포럼에서 찾으면서 해본 방법 중에 아래 방법이 잘 먹혔었다. (경우에 따라서는 안될 수 있다. 나머지는 아래 이어서 계속.) Continue reading 윈도 7 업데이트 (Windows Update) 확인이 오래 걸릴 때 해결법