레이블이 인코딩인 게시물을 표시합니다. 모든 게시물 표시
레이블이 인코딩인 게시물을 표시합니다. 모든 게시물 표시

2009년 7월 1일 수요일

notepad2 컴파일 삽질기 부록#9 : 다음 바꾸기(Replace Next) 메뉴에 추가

okto님 블로그에서 잠시 언급된 건데, 추가하는 것이 어렵지 않아 삽질기 부록#8에 이어서 포스팅함

Notepad2에서는 찾기 관련된 기능은 모두 메뉴에 등록되어 있다.
찾기(Ctrl-F), 다음 찾기(F3), 이전 찾기(Shift-F3) 모두 말이다.

그런데, 바꾸기의 경우 바꾸기(Ctrl-H)는 등록되어 있는데, 다음 바꾸기(F4)는 메뉴에 등록되어 있지는 않다.
(기능 자체는 있다)

물론, 이 기능은 단축기를 이용하는 쪽이 훨씬 편한 기능이지만, 메뉴에 없으면 기능 자체를 모를 수 있어 메뉴에 넣기로 했다.


1. Notepad2.rc

아래와 같은 부분을 찾다. File 메뉴의 일부이다.

    MENUITEM "Select To Ne&xt\tF2",         IDM_EDIT_SELTONEXT
    MENUITEM "R&eplace...\tCtrl+H", IDM_EDIT_REPLACE

이 아래에 아래의 한 줄을 추가한다.

    MENUITEM "Replace Nex&t\tF4",           IDM_EDIT_REPLACENEXT



2. Notepad2.c

void MsgInitMenu(HWND hwnd,WPARAM wParam,LPARAM lParam) 함수에서 아래와 같은 부분을 찾는다.

    EnableCmd(hmenu,IDM_EDIT_SELTOPREV,i && lstrlenA(efrData.szFind));
    EnableCmd(hmenu,IDM_EDIT_REPLACE,i /*&& !bReadOnly*/);


이 아래에 다음의 한 줄을 추가한다.

    EnableCmd(hmenu,IDM_EDIT_REPLACENEXT,i);


수정된 결과는 아래와 같다

사용자 삽입 이미지

짜잔~


notepad2 컴파일 삽질기 부록#8 : '기본 인코딩으로 다시 읽기' 메뉴로 할당

Notepad2 3.1로 HTML 파일을 편집하다보니 인코딩을 잘못 인식하는 경우가 발생했다.

Notepad2의 4.x 베타버전에는 인코딩을 수동으로 지정하는 기능이 있는데, 찾아보니 3.x에는 그런 기능까진 아니더라도 F8을 누르면 인코딩을 자동으로 확인하지 않고 기본 인코딩으로 다시 읽어주는 기능이 있더라.

가끔은 굉장히 필요한 기능인데, 메뉴에 따로 할당되지 않아 기능이 있다는 사실을 모르는 경우가 많을 것 같더라.
그래서, 이 기능을 별도의 메뉴로 지정했다.

이렇게 수정하는 방법은 아래와 같다.
수정할 대상은 Notepad2.rcNotepad2.c 두 개이다.


1. Notepad2.rc

아래와 같은 부분을 찾는다. File 메뉴의 일부이다.

    MENUITEM SEPARATOR
    MENUITEM "&Default...",                 IDM_ENCODING_SETDEFAULT

이 아래에 아래와 같은 두 줄을 추가한다.

    MENUITEM SEPARATOR
    MENUITEM "&Reload w/o Encoding Detection...\tF8",              CMD_F8



2. Notepad2.c

void MsgInitMenu(HWND hwnd,WPARAM wParam,LPARAM lParam) 함수에서 아래와 같은 부분을 찾는다.

    //EnableCmd(hmenu,IDM_LINEENDINGS_LF,!bReadOnly);
    //EnableCmd(hmenu,IDM_LINEENDINGS_CR,!bReadOnly);


이 아래에 다음의 한 줄을 추가한다.

    EnableCmd(hmenu,CMD_F8,i);


수정된 결과는 아래와 같다.

사용자 삽입 이미지

깨진 인코딩 문제(적색으로 표시)는 Reload... 한 방으로 해결된다!


2009년 2월 18일 수요일

비디오 인코딩 비트레이트 계산기

사용자 삽입 이미지


H.264 비디오 인코딩시 적절한 비트레이트?에서도 언급한 얘기지만, 적절한 인코딩 비트레이트를 찾는 건 쉽지 않습니다.
워낙에 화질이란 기준이 정량적으로 딱 표현되긴 어려운 것이라서 말이죠.

하지만, 원본 대비 압축률이나 비트레이트, 또는 원하는 파일 크기로 자신만의 기준을 만들 수는 있습니다.
이런 기준을 좀 편하게 잡아보기 위해 간단한 계산기를 만들어봤습니다.

앞글에도 적었듯이, 제 기준은 일단 1/150입니다.
이 기준을 비트레이트로 계산하려면, 폭 x 높이 x fps / 6400 을 계산하면 됩니다.

이 간단한 계산도 더 간단하게 할 겸, 동영상의 압축률도 쉽게 계산할 겸해서 하나 만들었습니다.


1. 이 계산기는 어느 칸이건 숫자를 입력하면 알아서 재계산을 해줍니다.

2. 초기값은 [다크 나이트] 립버전 크기 + 1/150 입니다



2009년 2월 15일 일요일

H.264 비디오 인코딩시 적절한 비트레이트?

사용자 삽입 이미지

비디오 인코딩시 용량대비 최적의 화질을 보여주는 비트레이트를 쉽게 정할 수는 없습니다.
컨텐츠의 내용이나, 화면의 변화량, 전체적인 색감 등에 따라 천차만별이니까요.

그래도 나름 스스로의 기준 즉, 저 만의 매직 넘버를 찾기 위해 나와있는 컨텐츠들의 비트레이트를 알아봤습니다.
대상은 [다크 나이트]입니다.


1. 블루레이 버전

[다크 나이트]의 블루레이는 ㅎㄷㄷ한 화면의 엄청난 정보량을 깔끔하게 보여주는 극강의 타이틀입니다.
이 물건은 VC1 코덱을 사용하며, 1920x1280, 23.976 fps30.72 Mbps의 비트레이트로 인코딩되었습니다.
(편의상 24 fps로 통칭하겠습니다)

이걸 1초당 정보량으로 계산해보겠습니다.
일단 영화의 raw 데이터는 1초당 1920x1280x24x3 B = 176,947,200 B 즉, 168.75 MB입니다.
이것이 30.72 Mbps = 3.84 MB/s로 인코딩된 것이니 1/44로 압축된 것이군요.

다시 말해, [다크 나이트]는 VC1으로 1/44로 압축되었단 뜻입니다.



2. 립버전 - 1080P

1080P 립버전은 H.264로 인코딩되었으며, 용량은 15.7816 GB입니다.
그리고, 이 영화의 러닝타임은 2:32:13 즉, 9133 초입니다.

나누기를 해보면 1.77 MB/s가 되는군요.
여기서 오디오의 크기를 비디오의 대략 1/10인 0.17 MB/s로 가정하면 1.6 MB/s 정도의 비트레이트가 되는군요.
H.264로 1/105.5... 생각하기 편하게 1/100으로 압축된 것이네요.



3. 립버전 - 720P

720P 립버전 역시 H.264로 인코딩되었으며, 해상도는 1280x720, 24fps이고, 용량은 5.8854 GB입니다.
(러닝타임은 역시 9133 초입니다)

나누기를 해보면 0.66 MB/s가 되고, 역시 오디오는 0.17 MB/s로 가정하면 0.49 MB/s가 되는군요.

한편, raw 데이터는 1초당 1280x720x24x3 B = 66,355,200 B 즉, 63.28125 MB입니다.

H.264로 1/129.1... 생각하기 편하게 1/130으로 압축된 것이군요.


제가 결정한 매직 넘버는 1/150입니다.

위에서 언급한 컨텐츠들은 극강의 화질을 유지한 상태에서의 비트레이트이기도 하거니와, 저는 립을 전혀 업으로 삼지도 않을 뿐더러 나름의 기준을 잡기 위한 것일 뿐이라 약간 작은 크기도 상관이 없을 것 같더군요.

1/150가 어느 정도인가 즉, 해상도에 따라 몇 kbps의 비트레이트인가를 계산하려면 아래와 같이 하면 됩니다.

폭 x 높이 x 3 x fps x 8 / 1024 / 150 kbps = 폭 x 높이 x fps / 6400 kbps


그렇다면 1280 x 720, 24fps의 동영상이 있다면 3456 kbps로 인코딩해야겠군요. ^^;;;

1/200이라면 8533.3으로 나누면 됩니다. 그럼 1280 x 720, 24fps2592 kbps가 되는군요.


덧1. 파일의 용량을 알 때 비트레이트를 계산할 때는 아래와 같이 계산하면 됩니다.

파일 크기(Byte) / 시간(초) * 8 / 1024 = 파일 크기(Byte) / 시간(초) / 128 kbps


덧2. 파일의 용량과 해상도를 알 때 압축률을 계산할 때는 아래와 같이 계산하면 됩니다.

(폭 x 높이 x 3 x fps x 시간(초)) / 파일 크기(Byte)