1 /*
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #include <android-base/properties.h>
17 #include <Codec2CommonUtils.h>
18 #include <Codec2Mapper.h>
19 #include <dav1d/dav1d.h>
20 
21 #define DUMP_FILE_PATH "/data/local/tmp/dump"
22 #define INPUT_DATA_DUMP_EXT "av1"
23 #define INPUT_SIZE_DUMP_EXT "size"
24 #define OUTPUT_YUV_DUMP_EXT "yuv"
25 
26 namespace android {
27 constexpr size_t kFileNameLength = 256;
28 
29 class C2SoftDav1dDump {
30   public:
31     void initDumping();
32     void destroyDumping();
33     void dumpInput(uint8_t* ptr, int new_size);
34     template <typename T>
35     void dumpOutput(const T* srcY, const T* srcU, const T* srcV, size_t srcYStride,
36                     size_t srcUStride, size_t srcVStride, int width, int height);
37     void writeDav1dOutYuvFile(const Dav1dPicture& p);
38 
39   private:
40     int mFramesToDump = 0;
41     int mFirstFrameToDump = 0;
42     int mOutputCount = 0;
43 
44     char mInDataFileName[kFileNameLength];
45     char mInSizeFileName[kFileNameLength];
46     char mDav1dOutYuvFileName[kFileNameLength];
47 
48     FILE* mInDataFile = nullptr;
49     FILE* mInSizeFile = nullptr;
50     FILE* mDav1dOutYuvFile = nullptr;
51 };
52 }  // namespace android
53