Năm 2018 của tôi

Chuẩn bị khép lại năm 2018, cuối nằm ngồi tính lại sổ đời, 365 ngày chứ mô có ít.
Về phần mềm thường nên đi từ tổng quan tới chi tiết, đầu tiên phải ngo ngó được cái gọi là kiến trúc (ARCH) trước, rồi đi sâu vào chi tiết từng phần sau. Tuy nhiên nhìn lại một năm có khi làm ngược lại thì dễ hơn, nên ta thử đi từ bản thân ra thế giới.

Về bản thân, cũng là 1 năm có nhiều thay đổi, nhớ những ngày này năm ngoái đang vật lộn với mớ bùng nhùng khi làm BrSE. Thời gian đó nhiều lúc tôi đã phải tự hỏi “mk, mình đang làm cái dek gì thế này”, trong những ngày tháng đó lúc đi làm qua cái cầu chỗ Shin-yokohama tôi lại dành 5-10 phút đứng ngắm trời đất ngắm thiên hạ và ngẫm về mình =)). Một trong mấy cái ảnh chụp lúc đó đấy giờ tôi đã dùng làm ảnh của blog. Sau hơn 1 năm trải nghiệm để đi đến kết luận rằng mặc dù kỹ sư cầu nối (BrSE) là một cái nghề rất hay, nhưng đấy không phải việc hợp với mình, thôi bỏ, rồi sang làm việc khác, chuyển công ty luôn. Quyết định “em trở về đúng nghĩa trái tim em” để cố gắng làm một kỹ sư chân chính, cố gắng đạt được CHÂN-THIỆN-MỸ ở một chỗ nhỏ nào đó trong công nghệ điện toán vĩ đại.

Năm 2018 cũng là năm bắt đầu làm blog, tập tành viết lách, viết ra mới thấy viết nó khó thế nào, âu cũng do phần nhiều là kiến thức nông cạn, độ ngu vẫn đang còn ở mức độ cao. Lúc đầu chỉ muốn làm chút để viết lại và học thêm kiến thức về video coding coi như có duyên nợ với nó, tên blog cũng được đặt theo mục đích đó. Khi viết rồi mới thấy ngoài cái đó nhiều thứ cần học, nhiều cái tưởng biết hóa ra chưa, và cũng biết rõ đang tồn tại nhiều cái mà bản thân mình không biết rằng mình không biết. Rồi có blog thì cũng có chỗ để lâu lâu cũng ghi chép vài thứ linh tinh mà nhiều khi không có ai hứng thú nghe.
Từ ngày viết blog thấy được mình đọc gì cũng cẩn thận hơn, tiếp thu kiến thức từ người khác cũng thận trọng hơn. Tập viết blog nên cũng mò ra được các trang có tiếng của lập trình viên nhà mình, ấn tượng nhất là vnhacker, ông anh này nổi tiếng bài Gọi đò, mình cũng toàn nghe nhạc vàng nhưng không thích cha này hát, trước giờ chỉ chơi kiểu anh Chế, anh Vũ, chị Quỳnh, vì thế ấn tượng là ấn tượng về bài viết chứ không phải bài hát của ảnh, nên theo mình thì bỏ hát đi code có lẽ lựa chọn đúng đắn của ảnh. Khi biết đọc blog này thì thốt lên 1 điều: “giá mà mình biết blog này sớm hơn”. Thêm vào đó theo dõi thêm các blog hàng top của nhà người.
Làm một kĩ sư chân chính thì cần có học trước, bù lại có việc ngày xưa không phải học các bộ môn của IT (vốn dĩ dân điện mà) thì năm nay cũng lên bắt đầu chịu khó tu sách, tự học, tìm hiểu thêm về lịch sử vài thử nhỏ nhỏ xung quanh mấy dòng code …
Cơ bản 1 năm để dần dần định hình chính mình?

Điều đặc biết nhất là năm nay gia đình nhỏ đón thêm 1 thành viên mới, vậy là 2 nhóc, mẹ xinh nhất nhà. Hơn 30 tuổi đầu rồi mà bố mẹ không có gì quí ngoài Khoai và Sắn. Lúc trước vợ sinh thằng ku Khoai, mình xa nhà do đang đi công tác, giờ ku Sắn, chứng kiến 9 tháng bụng mang dạ chửa, rồi lúc chăm con ngủ, thấy thương các mẹ các chị quá.

Ngoài bản thân và gia đình ra thì tiếp là năm 2018 trong mắt tôi. Đất Việt nhà mình, năm nay quả là 1 năm chính trường sôi động, anh ánh sáng tắt ngúm, nhạc sĩ thì được mặc áo Juventus, còn bang chủ cái bang nắm thâu tóm luôn ghế anh ánh sáng bỏ lại. Nhiều người chê, nhưng tôi thì đánh giá cao anh bang chủ Bần Khinh này, vì ảnh thật thà, lúc nhậm chức ảnh tâm sự “trình độ, năng lực còn hạn chế, sự hiểu biết không đáp ứng được yêu cầu”, tôi nghĩ ảnh nói thật chứ dek phải ảnh khiêm tốn, chỉ không hiểu sao cuối hội lại bầu cá nhân không đáp ứng được yêu cầu như vậy làm chủ tịch nác. Chính vì tính thật thà của anh mà thành ra ta biết nhiều việc do anh tiết lộ, vì dụ luật animal thật ra nhằm mục đích bảo vệ đoảng của ảnh chẳng hạn … À, có điều này tôi học được từ ảnh, trước đây ảnh phê phán “Nhất thể hóa”, nên giờ nhiều người kêu ảnh làm thế trước sau bất nhất thì ảnh bảo, cái này đéo phải “Nhất thể hóa” mà là “tình huống”, vậy là ảnh lật ngược tình thế, cái này làm tôi giật mình, quả thực sức mạnh thuật ngữ thật là đáng sợ. Dù sao cũng nên công nhận công đốt lò của ảnh mặc dù củi có lựa chọn, nhưng giờ các ông tướng, ông tai to mặt lớn tưởng hạ cánh an toàn lại toát mồ hôi hột, nghe gọi đến tên chắc như học sinh nghe cô gọi lên bảng, chỉ khác là học sinh có thể bị tát tập thể, còn các vị thì được các đồng chí cho đi ăn cơm nhà nước.

2018 cũng là năm mà lần đầu tiên dân mình biểu tình đẩy lui được luật mà cuốc hội định thông qua, luật đặc khu, cái luật mà không rõ chị Ngưn ăn phải bả gì mà trước đó đòi thông qua bằng được. À năm nay dáo sư Nạ có vẻ vượt mặt chị Tến về độ nát và độ dày mặt trong năm vừa qua.

Cuối năm này bóng đá Việt Nam(VN) vô địch AFF sau 10 năm đợi chờ, 10 năm không gặp tưởng tình đã cũ, nhưng dân mình vẫn đi bão như thường, đâu cũng thấy tự hào Việt Nam quá … dân mình chỉ có bóng đá là xuống đường tự do, bão thoải mái đi bay cả mạng. Tôi nghĩ bóng đá thôi vui thì vui chứ không nên tung hô tự hào Việt Nam, còn tự hào thì thiếu gì chỗ, ở Nhật đây dân mình phạm tội đứng đầu danh sách rồi, giờ xin visa cho mẹ sang chơi mà bổ sung đủ loại giấy tờ chi tiết, hay gần đây khách 152 du khách VN trốn lại Đài loan để lao động, làm gì có dân nước nào dám chơi qui mô cao vậy tự hào quá đi thôi.

Về quốc tế, Donal Trump đang là ngôi sao sáng nhất, mình rất thích ông này, vì không giống như các ông chính trị gia thông thường, có ông này cuộc chơi vui ơi là vui. Vừa tay bắt mặt mừng với a Tập xong, sang vn lại mang bà Trưng ra phang vào mặt ảnh (cái này chắc ông bảo đệ là “tao muốn chơi Tập, viết cho tao 1 bài”, chứ không nên hiểu là Trump biết bà Trưng, giờ hỏi khéo ổng nhầm sang bà Tưng cũng nên). Hôm trước chửi Ủn như gì, hôm sau bạn tốt. Trong khi các vị đức trị nhà sản cố giữ hình ảnh nói gì cũng kiểm duyệt trước sau,thì a bắn twitter liên hồi. Vì không chơi kiểu giữ hình ảnh, nên thằng nào éo theo anh thì a cắt kinh tế, dẹp chuyện bao cấp cho các tổ chức chung… đại loại là nhiều chuyện hay.

À, năm nay tuy blockchain xuống, y như đồ thị giá cả của nó, thì từ khóa AI vẫn ở mức rất hot, chả hiểu sao mình vẫn bình chân như vại trước xu thế nhà nhà học AI, người người làm AI nhỉ, thực sự là rất đáng lo đây ;(. Iporn của nhà táo có xu hướng đi xuống, mình thì ngồi cầu mong cho thằng nào xóa sổ được nó, không phải ghét nhà Táo mà rất muốn biết sau smartphone sẽ là cái gì, cũng như mình ăn rồi mong cho có cái kernel OS nào vượt mặt Linux kernel OS thôi.

Ghi nhanh lại mấy điểm của năm, năm 2018 của tôi là như vậy …

Creative Commons License

bzip2 & x265

Từ khi biết đến mấy chuẩn nén video gần đây (nói là gần đây nhưng thật ra từ H.264 đến giờ cũng 14 năm có lẻ rồi) như H.264, H.265 đều hỗ trợ nén không mất dữ liệu (lossless compression), bằng cách bỏ quá trình transform và quantization, xem ở mục Perceptual redundancy. Đôi lúc tôi thắc mắc xem thử so sánh sánh nó với mấy cái tool nén thường dùng nén các dữ liệu nói chung như Zip, Rar xem xem tỉ lệ nén nó cỡ bao nhiêu.

Kiểm tra bên nào nén mạnh hơn là một việc làm khá là phi khoa học, vì mục đích và đối tượng của 2 thằng khác hẳn nhau, nên việc so sánh kiểu này rất khập khiễng, không có ý nghĩa gì nhiều, cũng chả nói được lên điều chi nốt. Cơ mà mình thích thì mình thử thôi, thử qua 1 lần để từ giờ về sau đỡ “bứt rứt”.

Tôi chọn bzip2 để nén kiểu zip, lựa chọn kiểu zip là khá là ngẫu nhiên vì tôi không biết nhiều về các tool & thuật toán nén này để lựa chọn, đơn giản zip là thuật toán nén có lẽ được dùng nhiều nhất, còn chọn bzip2 là do dựa vào bài này cho thấy bzip2 nén cao so với các phần mềm nén khác như gzip, lzmash.

Về nén video, tôi chọn H.265 vì thời điểm hiện tại nó là chuẩn nén video cho phép tỉ lệ nén cao nhất. Để nén video theo chuẩn H.265 thì chọn x265, theo những gì tôi biết thì đây có vẻ là open source phổ biến và cung cấp độ nén tốt nhất so với các bộ encoder theo chuẩn H.265. Bản thân x265 được xây dựng dựa trên HM tool (HEVC model), là công cụ được nhóm JCT-VC xây dựng trong quá trình xây dựng đặc tả của H.265/HEVC.
Ngoài ra x265 thừa kế rất nhiều thuật toán nén từ x264 (nhìn cái tên chắc cũng đoán được). Mà x264 là open source tốt nhất thực hiện nén theo chuẩn H.264, nghe đâu facebook, youtube cũng dùng (nhưng tôi không tìm thấy thông tin tham khảo ngoài website chính của x264), do đó tôi nghĩ chắc x265 ngon :-), và tất nhiên cái quan trọng nhất để lựa chọn ở đây là cả nó hỗ trợ mode lossless.

Với bzip2 thì file kiểu gì cũng không thành vấn đề, nhưng với x265 vì bản chất nó nén video, nên file đó phải là số nguyên lần của frame size nào đó 🙂 ví dụ 1920×1080 hay chí ít cũng phải là 16×16, vì thế nếu dùng file bất kì thì phải thêm 1 đoạn dummy data vào cho nó đảm bảo việc alignment đấy, sau này khi cần giải nén file đã nén thì ta cắt bỏ đoán dummy data đấy ra là được.
Tuy nhiên để đơn giản thì tôi chọn luôn 1 file raw video, đây cũng là tạo điều kiện thuận lợi cho x265, coi như bzip2 cửa trên, chấp 1 quả trước.

Đầu tiên, người nông dân phải tạo file raw video, để tạo raw video ta kiếm 1 file video nào đó dạng .mp4 chẳng hạn, cái này rất dễ vì a/e thường hay phim ảnh.

$ffmpeg -i conchocon.mp4 -vframes 100 -c:v rawvideo -pix_fmt yuv420p out.yuv

File đang dùng có định dạng yuv420p, 1440×1080 → 1 frame size = 1440x1080x1.5 = 2332800 (byte), vậy 100 frame thì 233280000 byte.

Nén bằng bzip2 với option cho tỉ lệ nén cao nhất.

$bzip2 –best -z -k out.yuv

Kết quả file nén = 85802555 byte, như vậy tỉ lệ nén là 233280000/85802555 ~ 2.71 lần.

Tiếp đến nén lostless bằng x265 với option “–preset placebo” tức tối ưu về tỉ lệ nén.

$x265.exe –input out.yuv –fps 30 –preset placebo –lossless –input-res 1440×1080 –frames 100 -o lossless.h265

Kết quả file sau khi nén có kích thước 32171670 byte, đạt tỉ lệ nén là 233280000/32171670 ~ 7.25. Dùng option nén này thì thời gian nén cực kì lâu, chỉ với 100 frame tức là khoảng 3 giây video nhưng nén hết hơn 30 phút với cấu hình máy Intel(R) Core(TM) i5-3470 CPU@3.20GHz 3.20GHz, 8.00GB.

Tuy nhiên ngay cả lúc tôi chấp nhận không chọn ưu tiên mức độ nén mà chọn việc tối ưu cho tốc độ ” –preset ultrafast” để rút ngắn thời gian nén, lúc đấy hết tầm 16 giây, thì file sau khi nén cũng đạt được 40435062 byte, tỉ lệ nén là 233280000/40435062 ~ 5.77. Kết quả ngoài dự đoán của tôi.

Để chắc ăn là x265 đã thực hiện nén lostless, ta có thể dùng ffmpeg giải nén (decode) và so sánh nó với file gốc lúc đầu.

$ffmpeg -i lossless.h265 dec.yuv
$diff dec.yuv out.yuv

Do việc nén video phải cân đo đong đếm nhiều thứ để thỏa mãn đặc trưng khi nén video, như về tốc độ, về sử dụng memory …, nên tôi nghĩ rằng cho dù ở top đầu nén video như x265 đi chăng nữa thì khó ăn được bzip2 khi so sánh ở mode lossless. Thành ra kết quả nhận được làm tôi khá bất ngờ. Có vẻ như việc lựa chọn file raw video, đồng thời ít có sự chuyển cảnh đã tạo nhiều điểm lợi thế cho x265, y hệt như đang đá bóng sân nhà của x265 công thêm việc trọng tài thiên vị cho nó nốt. Lúc đầu chỉ định chơi nhởi đến đây, nhưng có vẻ quá thiệt cho bzip2, để công bằng hơn chút, lúc nào rảnh thì thử xem với kiểu file văn bản, text, doc … thì điều gì xẩy ra.

Còn nữa …

Tham khảo
[1] https://hevc.hhi.fraunhofer.de
[2] https://tukaani.org/lzma/benchmarks.html
[3] https://www.itu.int/en/ITU-T/studygroups/2013-2016/16/Pages/video/jctvc.aspx
[4] https://github.com/videolan/x265

Creative Commons License