Skip to content

Commit a79a68e

Browse files
xaionaro@dx.centerxaionaro@dx.center
authored andcommitted
feat: add AImageReader/AImage bindings and expand media NDK surface
Add NdkImage.h, NdkImageReader.h, NdkMediaCodecInfo.h, NdkMediaDataSource.h to the media manifest. Regenerate specs, capi, and idiomatic layers. This enables camera frame acquisition without Java (like FFmpeg's android_camera input device): ImageReader creates an ANativeWindow that can be used as a camera capture output target. Also fix cligen constructor detection to verify return type matches, preventing false positives on C-style output-param constructors. Media module now exposes 201 capi functions (was ~100), including: - ImageReader: New, Window, AcquireNextImage, AcquireLatestImage - Image: Width, Height, Format, Timestamp, plane accessors - MediaCodecInfo, MediaDataSource types
1 parent 629deab commit a79a68e

17 files changed

Lines changed: 2409 additions & 2 deletions

File tree

capi/manifests/media.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ GENERATOR:
33
PackageDescription: "Raw CGo bindings for Android Media NDK"
44
PackageLicense: "Apache-2.0"
55
Includes:
6+
- "media/NdkImage.h"
7+
- "media/NdkImageReader.h"
68
- "media/NdkMediaCodec.h"
9+
- "media/NdkMediaCodecInfo.h"
10+
- "media/NdkMediaDataSource.h"
711
- "media/NdkMediaExtractor.h"
812
- "media/NdkMediaFormat.h"
913
- "media/NdkMediaMuxer.h"

capi/media/cgo_helpers.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
#include "_cgo_export.h"
44

5+
void AImageReader_BufferRemovedCallback_b28d8959(void* context, AImageReader* reader, AHardwareBuffer* buffer) {
6+
AImageReader_BufferRemovedCallbackB28D8959(context, reader, buffer);
7+
}
8+
9+
void AImageReader_ImageCallback_32cdd235(void* context, AImageReader* reader) {
10+
AImageReader_ImageCallback32CDD235(context, reader);
11+
}
12+
513
void AMediaCodecOnAsyncError_f1342a37(AMediaCodec* codec, void* userdata, media_status_t _error, int actionCode, char* detail) {
614
AMediaCodecOnAsyncErrorF1342A37(codec, userdata, _error, actionCode, detail);
715
}
@@ -22,6 +30,22 @@ void AMediaCodecOnFrameRendered_61af0881(AMediaCodec* codec, void* userdata, int
2230
AMediaCodecOnFrameRendered61AF0881(codec, userdata, mediaTimeUs, systemNano);
2331
}
2432

33+
void AMediaDataSourceClose_06c40935(void* userdata) {
34+
AMediaDataSourceClose06C40935(userdata);
35+
}
36+
37+
int64_t AMediaDataSourceGetAvailableSize_40cc3318(void* userdata, off64_t offset) {
38+
return AMediaDataSourceGetAvailableSize40CC3318(userdata, offset);
39+
}
40+
41+
int64_t AMediaDataSourceGetSize_e0220813(void* userdata) {
42+
return AMediaDataSourceGetSizeE0220813(userdata);
43+
}
44+
45+
int64_t AMediaDataSourceReadAt_865c1a4b(void* userdata, off64_t offset, void* buffer, uint64_t size) {
46+
return AMediaDataSourceReadAt865C1A4B(userdata, offset, buffer, size);
47+
}
48+
2549
void AMediaDrmEventListener_76bb5445(AMediaDrm* p0, AMediaDrmSessionId* sessionId, AMediaDrmEventType eventType, int extra, uint8_t* data, uint64_t dataSize) {
2650
AMediaDrmEventListener76BB5445(p0, sessionId, eventType, extra, data, dataSize);
2751
}

capi/media/cgo_helpers.go

Lines changed: 230 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

capi/media/cgo_helpers.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
// Code generated by capigen. DO NOT EDIT.
22

3+
#include "media/NdkImage.h"
4+
#include "media/NdkImageReader.h"
35
#include "media/NdkMediaCodec.h"
6+
#include "media/NdkMediaCodecInfo.h"
7+
#include "media/NdkMediaDataSource.h"
48
#include "media/NdkMediaExtractor.h"
59
#include "media/NdkMediaFormat.h"
610
#include "media/NdkMediaMuxer.h"
@@ -11,6 +15,12 @@
1115

1216
#define __CGOGEN 1
1317

18+
// AImageReader_BufferRemovedCallback_b28d8959 is a proxy for callback AImageReader_BufferRemovedCallback.
19+
void AImageReader_BufferRemovedCallback_b28d8959(void* context, AImageReader* reader, AHardwareBuffer* buffer);
20+
21+
// AImageReader_ImageCallback_32cdd235 is a proxy for callback AImageReader_ImageCallback.
22+
void AImageReader_ImageCallback_32cdd235(void* context, AImageReader* reader);
23+
1424
// AMediaCodecOnAsyncError_f1342a37 is a proxy for callback AMediaCodecOnAsyncError.
1525
void AMediaCodecOnAsyncError_f1342a37(AMediaCodec* codec, void* userdata, media_status_t _error, int actionCode, char* detail);
1626

@@ -26,6 +36,18 @@ void AMediaCodecOnAsyncOutputAvailable_f41b4c39(AMediaCodec* codec, void* userda
2636
// AMediaCodecOnFrameRendered_61af0881 is a proxy for callback AMediaCodecOnFrameRendered.
2737
void AMediaCodecOnFrameRendered_61af0881(AMediaCodec* codec, void* userdata, int64_t mediaTimeUs, int64_t systemNano);
2838

39+
// AMediaDataSourceClose_06c40935 is a proxy for callback AMediaDataSourceClose.
40+
void AMediaDataSourceClose_06c40935(void* userdata);
41+
42+
// AMediaDataSourceGetAvailableSize_40cc3318 is a proxy for callback AMediaDataSourceGetAvailableSize.
43+
int64_t AMediaDataSourceGetAvailableSize_40cc3318(void* userdata, off64_t offset);
44+
45+
// AMediaDataSourceGetSize_e0220813 is a proxy for callback AMediaDataSourceGetSize.
46+
int64_t AMediaDataSourceGetSize_e0220813(void* userdata);
47+
48+
// AMediaDataSourceReadAt_865c1a4b is a proxy for callback AMediaDataSourceReadAt.
49+
int64_t AMediaDataSourceReadAt_865c1a4b(void* userdata, off64_t offset, void* buffer, uint64_t size);
50+
2951
// AMediaDrmEventListener_76bb5445 is a proxy for callback AMediaDrmEventListener.
3052
void AMediaDrmEventListener_76bb5445(AMediaDrm* p0, AMediaDrmSessionId* sessionId, AMediaDrmEventType eventType, int extra, uint8_t* data, uint64_t dataSize);
3153

capi/media/const.go

Lines changed: 40 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)