{"id":26587786,"url":"https://github.com/andreicherniaev/buildroot_x86_x264","last_synced_at":"2026-04-25T16:35:38.269Z","repository":{"id":283622811,"uuid":"952374357","full_name":"AndreiCherniaev/buildroot_x86_x264","owner":"AndreiCherniaev","description":"Build Linux with x264 for non-SIMD x86 CPU","archived":false,"fork":false,"pushed_at":"2025-08-06T04:18:29.000Z","size":26,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-06T06:18:05.646Z","etag":null,"topics":["buildroot","example"],"latest_commit_sha":null,"homepage":"","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AndreiCherniaev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-21T07:13:30.000Z","updated_at":"2025-08-06T04:18:32.000Z","dependencies_parsed_at":"2025-03-21T08:35:05.117Z","dependency_job_id":null,"html_url":"https://github.com/AndreiCherniaev/buildroot_x86_x264","commit_stats":null,"previous_names":["andreicherniaev/buildroot_x86_x264"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AndreiCherniaev/buildroot_x86_x264","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreiCherniaev%2Fbuildroot_x86_x264","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreiCherniaev%2Fbuildroot_x86_x264/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreiCherniaev%2Fbuildroot_x86_x264/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreiCherniaev%2Fbuildroot_x86_x264/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AndreiCherniaev","download_url":"https://codeload.github.com/AndreiCherniaev/buildroot_x86_x264/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreiCherniaev%2Fbuildroot_x86_x264/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32269462,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T09:15:33.318Z","status":"ssl_error","status_checked_at":"2026-04-25T09:15:31.997Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["buildroot","example"],"created_at":"2025-03-23T12:30:15.924Z","updated_at":"2026-04-25T16:35:38.253Z","avatar_url":"https://github.com/AndreiCherniaev.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"How to build Linux image with x264.\n\n## Compare with qemu_x86_defconfig\nConfig [qemu_x86_x264_defconfig](my_external_tree/configs/qemu_x86_x264_defconfig) is based on [qemu_x86_defconfig](https://github.com/buildroot/buildroot/blob/e82217622ea4778148de82a4b77972940b5e9a9e/configs/qemu_x86_defconfig).\n\n## Clone\n```\ngit clone --remote-submodules --recurse-submodules -j8 https://github.com/AndreiCherniaev/buildroot_x86_x264.git\ncd buildroot_x86_x264\n```\n## Synthesize MJPEG video\ninput.y4m video I plan use as input to test in x264's CLI. This step is optional, by default you will use already existing `input.y4m` file from this repo. This step is if you want to synthesize video again.\n```\n# sudo apt install ffmpeg\n# mkdir -p my_external_tree/board/my_company/my_board/fs-overlay/root/\nffmpeg -f lavfi -i testsrc=size=384x288:rate=1:duration=3 -vcodec wrapped_avframe -pix_fmt yuv420p my_external_tree/board/my_company/my_board/fs-overlay/root/input.y4m\n```\n## Make image\nIn example I use qemu_x86_x264_defconfig\n```\nmake clean -C buildroot\nmake BR2_EXTERNAL=$PWD/my_external_tree -C $PWD/buildroot qemu_x86_x264_defconfig\nmake -C buildroot\n```\n## Save non-default buildroot .config\nTo save non-default buildroot's buildroot/.config to $PWD/my_external_tree/configs/qemu_x86_x264_defconfig\n```\nmake -C $PWD/buildroot savedefconfig BR2_DEFCONFIG=$PWD/my_external_tree/configs/qemu_x86_x264_defconfig\n```\n## Start in QEMU\nThis code is based on emulation [script1](https://github.com/buildroot/buildroot/blob/02540771bccf7b10c7daecce5f0e1e41a73c1e07/boot/grub2/readme.txt#L4) and [script2](https://github.com/buildroot/buildroot/blob/9e3d572ff532df945fbc282fed22d10098e5718b/board/pc/readme.txt), run the emulation:\n```\nqemu-system-i386 -M pc -kernel buildroot/output/images/bzImage -drive file=buildroot/output/images/rootfs.ext2,if=virtio,format=raw -append \"rootwait root=/dev/vda console=tty1 console=ttyS0\" -serial stdio -net nic,model=virtio -net user\n```\nNote: Optionally add `-nographic` to see output not in extra screen but in console terminal. Or `-display curses` to pseudographic.\n\n## The test\nLogin in Linux as `root` and type:\n```\n# x264 --crf 24 -o o.mkv input.y4m \ny4m [info]: 384x288p 1:1 @ 1/1 fps (cfr)\nx264 [info]: using SAR=1/1\nx264 [info]: using cpu capabilities: MMX2 SSE2 SSE3 Cache64\nx264 [info]: profile High, level 2.1, 4:2:0, 8-bit\nx264 [info]: frame I:1     Avg QP: 6.80  size:  4466                           \nx264 [info]: frame P:1     Avg QP:21.09  size:  1247\nx264 [info]: frame B:1     Avg QP: 9.16  size:  1092\nx264 [info]: consecutive B-frames: 33.3% 66.7%  0.0%  0.0%\nx264 [info]: mb I  I16..4: 75.0%  3.9% 21.1%\nx264 [info]: mb P  I16..4:  4.2%  1.6%  7.6%  P16..4:  3.2%  3.9%  0.2%  0.0%  0.0%    skip:79.2%\nx264 [info]: mb B  I16..4:  2.1%  0.7%  1.6%  B16..8:  6.2%  6.5%  0.9%  direct: 1.6%  skip:80.3%  L0:53.0% L1:45.3% BI: 1.7%\nx264 [info]: 8x8 transform intra:5.3% inter:68.6%\nx264 [info]: coded y,uvDC,uvAC intra: 14.4% 35.8% 27.3% inter: 1.9% 7.2% 6.4%\nx264 [info]: i16 v,h,dc,p: 81%  7%  7%  6%\nx264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 72%  6% 12%  2%  0%  0%  0%  0%  8%\nx264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 61% 18% 15%  2%  1%  1%  0%  2%  0%\nx264 [info]: i8c dc,h,v,p: 48% 17% 30%  4%\nx264 [info]: Weighted P-Frames: Y:0.0% UV:0.0%\nx264 [info]: kb/s:18.15\n\nencoded 3 frames, 16.20 fps, 20.03 kb/s\n```\nWhat's the problem? Look at `using cpu capabilities: MMX2 SSE2 SSE3 Cache64`, but in buildroot we selected pentium pro, so even MMX2 should not be available. See also [x264 SIMD asm](https://forum.doom9.org/showthread.php?t=185002)\n\n## How to rebuild x264\nIn case of problems to fix it and then build again\n```\nmake x264-dirclean -C buildroot\nmake x264-rebuild -C buildroot 2\u003e\u00261 |tee x264.log\n```\nThen see log in `x264.log`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreicherniaev%2Fbuildroot_x86_x264","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandreicherniaev%2Fbuildroot_x86_x264","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreicherniaev%2Fbuildroot_x86_x264/lists"}