Transcoder: change src/dst to fd
MediaTranscoder takes fd as input from upper level service.
Also, leave file delete to client, since service side can't do file
create/delete. File opening is done by a callback into the app;
it seems delete should just handled by app side itself.
Minor refactor to reduce header pollution when included.
bug: 154734285
bug: 156003955, 152091443, 155918341
test: transcoder unit tests.
Change-Id: I4eb8a7d9fea2ccb479f09888353ac4e65bac16f8
diff --git a/media/libmediatranscoding/transcoder/tests/MediaTranscoderTests.cpp b/media/libmediatranscoding/transcoder/tests/MediaTranscoderTests.cpp
index c4a67bb..09c24b5 100644
--- a/media/libmediatranscoding/transcoder/tests/MediaTranscoderTests.cpp
+++ b/media/libmediatranscoding/transcoder/tests/MediaTranscoderTests.cpp
@@ -68,6 +68,10 @@
static const char* SOURCE_PATH =
"/data/local/tmp/TranscoderTestAssets/cubicle_avc_480x240_aac_24KHz.mp4";
+// Write-only, create file if non-existent, don't overwrite existing file.
+static constexpr int kOpenFlags = O_WRONLY | O_CREAT | O_EXCL;
+// User R+W permission.
+static constexpr int kFileMode = S_IRUSR | S_IWUSR;
class MediaTranscoderTests : public ::testing::Test {
public:
@@ -92,7 +96,8 @@
auto transcoder = MediaTranscoder::create(mCallbacks, nullptr);
EXPECT_NE(transcoder, nullptr);
- EXPECT_EQ(transcoder->configureSource(SOURCE_PATH), AMEDIA_OK);
+ const int srcFd = open(SOURCE_PATH, O_RDONLY);
+ EXPECT_EQ(transcoder->configureSource(srcFd), AMEDIA_OK);
std::vector<std::shared_ptr<AMediaFormat>> trackFormats = transcoder->getTrackFormats();
EXPECT_GT(trackFormats.size(), 0);
@@ -105,13 +110,16 @@
}
}
deleteFile(destPath);
- EXPECT_EQ(transcoder->configureDestination(destPath), AMEDIA_OK);
+ const int dstFd = open(destPath, kOpenFlags, kFileMode);
+ EXPECT_EQ(transcoder->configureDestination(dstFd), AMEDIA_OK);
media_status_t startStatus = transcoder->start();
EXPECT_EQ(startStatus, AMEDIA_OK);
if (startStatus == AMEDIA_OK) {
mCallbacks->waitForTranscodingFinished();
}
+ close(srcFd);
+ close(dstFd);
return mCallbacks->mStatus;
}
diff --git a/media/libmediatranscoding/transcoder/tests/TrackTranscoderTestUtils.h b/media/libmediatranscoding/transcoder/tests/TrackTranscoderTestUtils.h
index 79c227b..32a1a0a 100644
--- a/media/libmediatranscoding/transcoder/tests/TrackTranscoderTestUtils.h
+++ b/media/libmediatranscoding/transcoder/tests/TrackTranscoderTestUtils.h
@@ -15,6 +15,7 @@
*/
#include <media/MediaTrackTranscoder.h>
+#include <media/MediaTrackTranscoderCallback.h>
#include <condition_variable>
#include <memory>