Giới thiệu

Các bài viết sẽ nhằm vào bất cứ đề tài gì mà tôi có hứng thú muốn đề cập, không theo một chủ đề nhất định. Nguyên tắc viết không theo khuôn khổ và tự do thoải mái nhất có thể, nội dung bài viết cũng sẽ thay đổi liên tục theo thời gian nên sẽ rất khó theo dõi. Bên cạnh đó, độ dài của các bài viết rất bất định, nhiều khi dài lê thê và tràn lan.

Các quy tắc chung (Đọc kỹ trước khi quyết định đọc nội dung bài viết):
Điều 1. Nội dung bài viết có thể dựa hoàn toàn vào quan điểm cá nhân, do đó sẽ khác với quan điểm của bạn. Bạn luôn có quyền ngừng đọc hoặc không cần đọc. Tuy nhiên, một khi đã đọc, bạn không được phép tranh cãi với tác giả. (Bạn được quyền nói xấu tác giả, nếu thích). Tác giả không chịu bất cứ trách nhiệm nào nếu nội dung bài viết gây ảnh hưởng xấu đến sức khỏe hay tâm lý của bạn.
Điều 2. Nội dung bài viết có thể chứa rất nhiều "spoiler" nên khuyên bạn không nên đọc trước khi xem/chơi tựa phim/anime/video game... được nhắc đến trong bài viết. Tác giả không chịu trách nhiệm vì làm bạn mất hứng. Bên cạnh đó, vì sở thích mỗi người mỗi khác, những chi tiết mà tác giả chê khen có thể không giống cách đánh giá của bạn, nên đừng dùng nó làm cơ sở lựa chọn. Ngoài ra, xem lại điều 1.
Điều 3. Bài viết chỉ được phép tồn tại trên blog này. Bạn không được quyền sao chép toàn bộ hay một phần nội dung của bất cứ bài viết nào sang nơi khác (bạn được phép đăng link của bài viết đi nơi khác, nếu muốn). Tác giả phủ nhận hoàn toàn trách nhiệm liên quan đến nội dung bài viết nếu nó được phát tán nơi khác dưới hình thức không phải link, tuy nhiên vẫn giữ quyền đối với nó.

2013-03-18

Cớ gì lại giấu x264 settings?

Nếu ai từng sử dụng x264 để encode có lẽ biết rằng mặc định chương trình sẽ ghi lại settings và version sử dụng (user data) vào trong SEI (một phần header của bitstream). Việc này trước hết giúp cho các developer của x264 dễ dàng debug khi có người dùng báo lỗi. Về sau, thông tin này còn giúp những người dùng kinh nghiệm xem lại settings mình từng sử dụng. Tất nhiên là cũng biết được settings mà người khác sử dụng cho bản encode nào đó.

Thông tin nói trên nhìn chung là hữu dụng, mặc dù đối với người dùng thông thường chúng chẳng có ý nghĩa gì. Cũng cần nói thêm là chỉ settings thôi không nói lên nhiều điều về bản thân stream. Chuyên gia trong lĩnh vực video coding và định dạng AVC còn có nhiều cách thức khác nhau để phân tích, thu thập thông tin kỹ thuật và đánh giá từ một bản H.264 encode. Tuy nhiên nhìn vào settings của một bản encode có thể phần nào đánh giá "tay nghề" của encode.

Nói "tay nghề" cho vui chứ thật ra chẳng cao siêu gì, chẳng phải "bí kíp" hay gì gì đó tương tự. Có hai vấn đề có thể dễ dàng nhận thấy từ user data: 1) version cũ hay mới tương quan với thời gian ra đời của bản encode, lắm khi gặp trường hợp encoder lười cập nhật, hoặc sử dụng x264 kèm theo một GUI lỗi thời, hoặc có khi encoder suy nghĩ kiểu "If it ain't broke, don't fix it" lệch lạc... mà sử dụng phiên bản x264 từ thời khủng long, tất nhiên là không hiệu quả bằng phiên bản mới; 2) settings có "sane" hay không, nhiều encoder "học lỏm" từ các tut/guide "cổ lổ sỉ" trên "teh interwebz" mà không cần biết ý nghĩa của các settings dẫn đến việc sử dụng sai hoặc không phù hợp, kiểu như --deblock -6:-6, --ref 1, --aq-strength 2.0, --scenecut 99, --min-keyint 1,... đại loại thế, chỉ cần nhìn vào là đoán được phần nào chất lượng/tính hiệu quả (chất lượng/dung lượng) của bản encode (nhất là khi so sánh giữa hai bản encode).

Thế nhưng có một số người lại muốn giấu nó đi, đặc biệt khi hiện nay có những bản mod build phát tán phổ biến trên net giúp giấu nó dễ dàng, chứ không cần người dùng phải dùng đến Hex editor để sửa header hoặc tự viết/áp dụng patch trên build riêng.

Settings cho x264 không khó để hiểu và encoder có chút kinh nghiệm có thể dễ dàng sử dụng chúng hiệu quả và hợp lý, do đó chuyện "trôm" settings để đi áp dụng bừa bãi chỉ làm ảnh hưởng "thanh danh" của encoder chứ chẳng hay ho gì. Hơn nữa phần lớn settings có thể (và nên) áp dụng mặc định theo preset, chỉ một số settings cần đến kinh nghiệm và kiến thức để tinh chỉnh phù hợp với đặc tính của video cần encode. Trên thực tế, encoder của phần lớn các "nhóm rip" tên tuổi, từ scene cho tới internal đều không che giấu x264 settings mà họ dùng, bởi họ chẳng việc gì phải giấu, càng không sợ bị soi. Chất lượng bản encode nhiều khi còn phụ thuộc vào việc sử dụng filterchain và nhiều yếu tố khác, dẫn đến tính chất của chúng khác nhau và x264 settings vì thế cũng phải tùy chỉnh cho phù hợp. Tuy nhiên, đa số sử dụng preset veryslow hoặc placebo nên settings nhìn chung chẳng khác nhau mấy.

Đáng buồn là trong giới anime encoding, hiện tượng giấu x264 settings xuất hiện ngày càng nhiều, với những lý do không hiểu nổi! Mặc dù khá nhiều encoder này đều dày dặn kinh nghiệm, đi đầu phong trào là adenozin của THORAnime vốn đã thực hiện việc này từ rất lâu (dùng Hex editor thay toàn bộ settings và version bằng số 0 hoặc khoảng trống), những bản encode của họ đương nhiên là đảm bảo về chất lượng mà không cần quan tâm đến settings làm gì (nghĩa là họ thuộc dạng người biết/am hiểu điều mình làm). Nhưng cũng có không ít bản encode có chất lượng tệ do những encoder mới tập sự thực hiện.

Như dân gian có câu "tốt khoe, xấu che", nếu bạn không dùng settings kiểu điên rồ nào đó, chẳng việc gì phải giấu nó đi cả. Giấu nó thì được, rất dễ là đằng khác, nhưng có đủ tự tin "phơi bày" nó ra mới đáng nể. Và quan trọng hơn thảy, làm vậy có giấu được chất lượng thật của bản encode không, trừ khi bạn giấu luôn cả bản encode đi!