)]}'
{
  "commit": "80c037c2d72c6d936244ebbae1ef6e757bb77f1e",
  "tree": "2a5c0a62d8ea5d5cca0b8398dc81b66c371ddb03",
  "parents": [
    "916b0505c7f3e3f055631dcadfafdbb95a335912"
  ],
  "author": {
    "name": "luigi-rosso",
    "email": "hello@rive.app",
    "time": "Tue Jan 23 04:11:42 2024 +0000"
  },
  "committer": {
    "name": "luigi-rosso",
    "email": "hello@rive.app",
    "time": "Tue Jan 23 04:11:42 2024 +0000"
  },
  "message": "Audio engine\n\nAdds an audio engine abstraction (implemented with miniaudio) in Rive. We can selectively replace it with other abstractions later if we find miniaudio isn\u0027t well suited everywhere but I\u0027m confident it will be based on flexibility with getting it working in the recorder.\n\nAdds audio support in:\n\n- packages/rive_common\n  - WASM: rive_audio_wasm.dart\n  - FFI: rive_audio_ffi.dart\n- packages/runtime\n- packages/recorder\n\nSubsequent PR will add support in:\n\n- packages/rive_unity\n  - This is getting meaty enough...\n- packages/rive_flutter\n  - This requires publishing rive_common so I want to make sure this is reviewed and accepted before publishing\n  - I\u0027d also prefer to merge layout constraints into rive_common before this lands.\n\nEditor features:\n- Updated preview window:\n\u003cimg width\u003d\"248\" alt\u003d\"CleanShot 2024-01-15 at 14 44 31@2x\" src\u003d\"https://github.com/rive-app/rive/assets/454182/a9588be6-8370-4e22-ab32-af1e9ed71183\"\u003e\n\n- Preview waveforms in the timeline:\n\u003cimg width\u003d\"651\" alt\u003d\"CleanShot 2024-01-15 at 14 44 53@2x\" src\u003d\"https://github.com/rive-app/rive/assets/454182/2710667f-838f-483d-9647-e2bcb9e0237a\"\u003e\n\n- Subsequent PR will also use threads in web editor build (currently uses a time/frame based decoder to offload ui). I can\u0027t do that until I can verify the Shared Memory access is granted once rive_common lands in pub.dev and then we can push to UAT.\n\nDiffs\u003d\n73bf11db3 Audio engine (#6454)\n\nCo-authored-by: Luigi Rosso \u003cluigi-rosso@users.noreply.github.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fc47721769ad10287a28c5227b8e429b928ee7dd",
      "old_mode": 33188,
      "old_path": ".rive_head",
      "new_id": "8ed3cc47289a084bf8434dd6e333b8e014ca211e",
      "new_mode": 33188,
      "new_path": ".rive_head"
    },
    {
      "type": "modify",
      "old_id": "8b2f42badca1d7afd219a332507a8313e75b5c61",
      "old_mode": 33261,
      "old_path": "build.sh",
      "new_id": "ec40d62631cd1785e7250ae00b2afe7e418980ed",
      "new_mode": 33261,
      "new_path": "build.sh"
    },
    {
      "type": "modify",
      "old_id": "d90d30e183418e26f17f35c2d52dc9f0a3bbeb26",
      "old_mode": 33188,
      "old_path": "build/premake5.lua",
      "new_id": "d17c999631a45fb0ffd3c62fa77ffad35909e8e8",
      "new_mode": 33188,
      "new_path": "build/premake5.lua"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "aa9e5b289c8e3e7b2dde8a8072655bb7f671612d",
      "new_mode": 33188,
      "new_path": "dependencies/premake5_miniaudio.lua"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "667cf27058d6f150a5c9cb88c6528ff9610ecfbf",
      "new_mode": 33188,
      "new_path": "dev/defs/assets/audio_asset.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3ee2a479ecd5b17e2b5b9dd9ced904dbeebf6283",
      "new_mode": 33188,
      "new_path": "dev/defs/audio_event.json"
    },
    {
      "type": "modify",
      "old_id": "030865e2eb6b11f6dff2c50a91080b69e081141b",
      "old_mode": 33188,
      "old_path": "dev/test/premake5.lua",
      "new_id": "0018775f5bbda06d08e2cd4b1a4a24dc755a5863",
      "new_mode": 33188,
      "new_path": "dev/test/premake5.lua"
    },
    {
      "type": "modify",
      "old_id": "ff5ea093fb7ed0f64e9a07b4ee9292a711e4c184",
      "old_mode": 33188,
      "old_path": "include/rive/animation/linear_animation_instance.hpp",
      "new_id": "a7cb9f6f3a34a634776795d078aeb242225c3dea",
      "new_mode": 33188,
      "new_path": "include/rive/animation/linear_animation_instance.hpp"
    },
    {
      "type": "modify",
      "old_id": "2a4838b5e8e9d991a6b7ee5326ee24708aeb957a",
      "old_mode": 33188,
      "old_path": "include/rive/animation/state_machine_instance.hpp",
      "new_id": "a9c5ad52f575538e03ee3ff13bf1b7202e113cb9",
      "new_mode": 33188,
      "new_path": "include/rive/animation/state_machine_instance.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d1de305f0df60c425ceafafee92a57d5cae64d25",
      "new_mode": 33188,
      "new_path": "include/rive/assets/audio_asset.hpp"
    },
    {
      "type": "modify",
      "old_id": "f1d587b98b5bec6f9a7c58a202f5235c0ab7520c",
      "old_mode": 33188,
      "old_path": "include/rive/assets/file_asset.hpp",
      "new_id": "a8ed721ee8c45d8587d0139b9f665085a4d9bcf3",
      "new_mode": 33188,
      "new_path": "include/rive/assets/file_asset.hpp"
    },
    {
      "type": "modify",
      "old_id": "c0afb30a7b972daf20dfe1028edace63bdfce171",
      "old_mode": 33188,
      "old_path": "include/rive/assets/file_asset_contents.hpp",
      "new_id": "67457c02d1b7fe798143f4af2d5a3133720f7141",
      "new_mode": 33188,
      "new_path": "include/rive/assets/file_asset_contents.hpp"
    },
    {
      "type": "modify",
      "old_id": "e39fb72bebfd4b8b85a7f0b6cc27bf53d28eeff4",
      "old_mode": 33188,
      "old_path": "include/rive/assets/font_asset.hpp",
      "new_id": "29fad8d70fd3b21cb5be1beee428be2035a9dde9",
      "new_mode": 33188,
      "new_path": "include/rive/assets/font_asset.hpp"
    },
    {
      "type": "modify",
      "old_id": "93243fe21e3beb333159fc225ec2ba1760d3af55",
      "old_mode": 33188,
      "old_path": "include/rive/assets/image_asset.hpp",
      "new_id": "54a3856c2507445639ed00a44721a4a2c9cb3e60",
      "new_mode": 33188,
      "new_path": "include/rive/assets/image_asset.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b84a13fab5e53584a45ab1f839e04ec528544e2f",
      "new_mode": 33188,
      "new_path": "include/rive/audio/audio_engine.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ab73fe542e6e67f536f8d3da86a7b99ada248645",
      "new_mode": 33188,
      "new_path": "include/rive/audio/audio_format.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6243fd7ff3b7ad31ead5e2d07878b42eefeda2cd",
      "new_mode": 33188,
      "new_path": "include/rive/audio/audio_reader.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2a409f62adcee998170871885adf1eb14093fb23",
      "new_mode": 33188,
      "new_path": "include/rive/audio/audio_sound.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "834741e0cd74864daee5c39a6b2a1b4339e1cffd",
      "new_mode": 33188,
      "new_path": "include/rive/audio/audio_source.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cd67c6c5a936f0fca205e136bb83aefae01f55d0",
      "new_mode": 33188,
      "new_path": "include/rive/audio_event.hpp"
    },
    {
      "type": "modify",
      "old_id": "047aaa03a57d7f0a7a14f4008a162a67dd46dc74",
      "old_mode": 33188,
      "old_path": "include/rive/core/field_types/core_callback_type.hpp",
      "new_id": "1c8ba627c565f487ec6b303fde1e81bbd10acc71",
      "new_mode": 33188,
      "new_path": "include/rive/core/field_types/core_callback_type.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6af1e4e852ab57e612efc35af046372f8a02073c",
      "new_mode": 33188,
      "new_path": "include/rive/generated/assets/audio_asset_base.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fece5634e4897126463c4e5507d05f0afc52ad47",
      "new_mode": 33188,
      "new_path": "include/rive/generated/audio_event_base.hpp"
    },
    {
      "type": "modify",
      "old_id": "658b81b295d6b0582135ba4bbb29fe8b1b8bf4e2",
      "old_mode": 33188,
      "old_path": "include/rive/generated/core_registry.hpp",
      "new_id": "e8fe10811e0811ba12cfc89fa1d81278ccd8432a",
      "new_mode": 33188,
      "new_path": "include/rive/generated/core_registry.hpp"
    },
    {
      "type": "modify",
      "old_id": "f37271ae36fdfac8cc54d800d7e37d6b7790f183",
      "old_mode": 33188,
      "old_path": "include/rive/relative_local_asset_loader.hpp",
      "new_id": "6056c9c904f32828ed051e8f977308025c330f55",
      "new_mode": 33188,
      "new_path": "include/rive/relative_local_asset_loader.hpp"
    },
    {
      "type": "modify",
      "old_id": "dd4d6edc7810fb2a8a82a19c8555f532b3e60286",
      "old_mode": 33188,
      "old_path": "include/rive/scene.hpp",
      "new_id": "21cb60666dd94063c1a9df80b7c52d638a225960",
      "new_mode": 33188,
      "new_path": "include/rive/scene.hpp"
    },
    {
      "type": "modify",
      "old_id": "5a52b5813fddbebbd84ea41e1b4a765762f50e7e",
      "old_mode": 33261,
      "old_path": "skia/renderer/build.sh",
      "new_id": "474b491673927afb6b7392bd041e10a4084da6dc",
      "new_mode": 33261,
      "new_path": "skia/renderer/build.sh"
    },
    {
      "type": "modify",
      "old_id": "7c1826f9877660d977d46653e1e162fc16479f82",
      "old_mode": 33188,
      "old_path": "skia/renderer/build/premake5.lua",
      "new_id": "2376a5201c075a77e6457477596dd1c925433083",
      "new_mode": 33188,
      "new_path": "skia/renderer/build/premake5.lua"
    },
    {
      "type": "modify",
      "old_id": "3c31b7263e6a5271c9b3c14222616c204758628f",
      "old_mode": 33188,
      "old_path": "src/animation/linear_animation_instance.cpp",
      "new_id": "7e132d46e778164f8a29f5f5b5337c12c690f80e",
      "new_mode": 33188,
      "new_path": "src/animation/linear_animation_instance.cpp"
    },
    {
      "type": "modify",
      "old_id": "05fa3cb152dc5537ec9180dba19ccf78ca09ca2e",
      "old_mode": 33188,
      "old_path": "src/animation/state_machine_instance.cpp",
      "new_id": "e9316768efb23cac6bc944fcc356c8b90bf04885",
      "new_mode": 33188,
      "new_path": "src/animation/state_machine_instance.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "de59faea729e8bbc31dda5ba428209fb46d28cff",
      "new_mode": 33188,
      "new_path": "src/assets/audio_asset.cpp"
    },
    {
      "type": "modify",
      "old_id": "829b709f97be01f221083f49f2daf3c3b964b181",
      "old_mode": 33188,
      "old_path": "src/assets/file_asset_contents.cpp",
      "new_id": "fb905730c2f77ec03ebd6febe5a6c6667ebae077",
      "new_mode": 33188,
      "new_path": "src/assets/file_asset_contents.cpp"
    },
    {
      "type": "modify",
      "old_id": "d87101ddc400cbdcf73363834a0a71ae82fe0950",
      "old_mode": 33188,
      "old_path": "src/assets/font_asset.cpp",
      "new_id": "e499b28156525da68ae4f773ad2cc24278c67f14",
      "new_mode": 33188,
      "new_path": "src/assets/font_asset.cpp"
    },
    {
      "type": "modify",
      "old_id": "37f2ad2c7b24553b61ed72c03fcfe2cf551b0cfb",
      "old_mode": 33188,
      "old_path": "src/assets/image_asset.cpp",
      "new_id": "cc5903012ba353cff3db43f3b99eae46411a95ef",
      "new_mode": 33188,
      "new_path": "src/assets/image_asset.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d99fb61734cb6826fc3f63782dc83f70dfb09cf4",
      "new_mode": 33188,
      "new_path": "src/audio/audio_engine.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f272bea4324ceea88d347c0c5f0c8bb06b8e2b5e",
      "new_mode": 33188,
      "new_path": "src/audio/audio_engine.m"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bfc3d182764c842c3d92c4b8e82bf1f325f46eed",
      "new_mode": 33188,
      "new_path": "src/audio/audio_reader.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "21631f40d212374a90ed8411a3f891a4ffedd1d2",
      "new_mode": 33188,
      "new_path": "src/audio/audio_sound.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8cc5b78eedbae104c8d957704457696aaa8a037c",
      "new_mode": 33188,
      "new_path": "src/audio/audio_source.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3a6ead5360426febea26636cf9d980036e644e13",
      "new_mode": 33188,
      "new_path": "src/audio_event.cpp"
    },
    {
      "type": "modify",
      "old_id": "a6dee57cbad20353464b5de71d16410e52735ceb",
      "old_mode": 33188,
      "old_path": "src/file.cpp",
      "new_id": "183aa5048b3a3fe8dcdaac93c84c3ddb9161183b",
      "new_mode": 33188,
      "new_path": "src/file.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0b7504d474cf18d8e0489390274227595de5a791",
      "new_mode": 33188,
      "new_path": "src/generated/assets/audio_asset_base.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "83ef47492c88575baeb588ae0059eb079f760441",
      "new_mode": 33188,
      "new_path": "src/generated/audio_event_base.cpp"
    },
    {
      "type": "modify",
      "old_id": "935aad31bab874ac118e2b816356adcbff4d28d2",
      "old_mode": 33188,
      "old_path": "src/importers/file_asset_importer.cpp",
      "new_id": "1165e0d960a8577c38d7df8404e86a4bea8b3702",
      "new_mode": 33188,
      "new_path": "src/importers/file_asset_importer.cpp"
    },
    {
      "type": "modify",
      "old_id": "e568553ef800eecae811c709a689e2d6e9655e83",
      "old_mode": 33188,
      "old_path": "src/scene.cpp",
      "new_id": "2bf0a09af3a73551a1311263802e15a722fbb310",
      "new_mode": 33188,
      "new_path": "src/scene.cpp"
    },
    {
      "type": "modify",
      "old_id": "fac4a59547e8ddc8725fd7077af4e14c147aa534",
      "old_mode": 33188,
      "old_path": "src/shapes/image.cpp",
      "new_id": "021f84ba9979bd3b823b82a6d47680c3ab82d37a",
      "new_mode": 33188,
      "new_path": "src/shapes/image.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1a11620720129ab44b5f3b938a2447b57e66eb15",
      "new_mode": 33188,
      "new_path": "test/assets/audio/song.mp3"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c108b6ad0a389f8c634518031bec55ef601f5def",
      "new_mode": 33188,
      "new_path": "test/assets/audio/what.wav"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6178de5bbead1b040676e6c41341d3c635add7ec",
      "new_mode": 33188,
      "new_path": "test/assets/sound.riv"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f62e844624bfbd4237b0e2b770147cb8b0e5ef04",
      "new_mode": 33188,
      "new_path": "test/audio_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "9038efa83d0ebafd53da99d6c30093958513024c",
      "old_mode": 33261,
      "old_path": "viewer/build/macosx/build_viewer.sh",
      "new_id": "d47310d692ef7dacf67146b87db341d5e9a3eb68",
      "new_mode": 33261,
      "new_path": "viewer/build/macosx/build_viewer.sh"
    },
    {
      "type": "modify",
      "old_id": "6c061813be64c56933f47b1563b08983359e473f",
      "old_mode": 33188,
      "old_path": "viewer/build/premake5_viewer.lua",
      "new_id": "72be65b48a07c87d553532fb783e56b97e5422a5",
      "new_mode": 33188,
      "new_path": "viewer/build/premake5_viewer.lua"
    }
  ]
}
