1/* 2 * Copyright 2021, Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Emmanuel Gil Peyrot 7 */ 8#ifndef AVIF_TRANSLATOR_H 9#define AVIF_TRANSLATOR_H 10 11 12#include <ByteOrder.h> 13#include <DataIO.h> 14#include <File.h> 15#include <fs_attr.h> 16#include <GraphicsDefs.h> 17#include <InterfaceDefs.h> 18#include <TranslationDefs.h> 19#include <Translator.h> 20#include <TranslatorFormats.h> 21 22#include "BaseTranslator.h" 23 24#define AVIF_TRANSLATOR_VERSION B_TRANSLATION_MAKE_VERSION(0,1,0) 25#define AVIF_IMAGE_FORMAT 'AVIF' 26 27#define AVIF_SETTING_LOSSLESS "lossless" 28#define AVIF_SETTING_PIXEL_FORMAT "pixfmt" 29#define AVIF_SETTING_QUALITY "quality" 30#define AVIF_SETTING_SPEED "speed" 31#define AVIF_SETTING_TILES_HORIZONTAL "htiles" 32#define AVIF_SETTING_TILES_VERTICAL "vtiles" 33 34 35#define AVIF_IN_QUALITY 0.90 36#define AVIF_IN_CAPABILITY 0.90 37 38#define AVIF_OUT_QUALITY 0.90 39#define AVIF_OUT_CAPABILITY 0.5 40 41#define BITS_IN_QUALITY 0.8 42#define BITS_IN_CAPABILITY 0.6 43 44#define BITS_OUT_QUALITY 0.5 45#define BITS_OUT_CAPABILITY 0.4 46 47 48struct AVIFPicture; 49 50 51class AVIFTranslator : public BaseTranslator { 52public: 53 AVIFTranslator(); 54 55 virtual status_t DerivedIdentify(BPositionIO* stream, 56 const translation_format* format, 57 BMessage* settings, translator_info* info, 58 uint32 outType); 59 60 virtual status_t DerivedTranslate(BPositionIO* stream, 61 const translator_info* info, 62 BMessage* settings, uint32 outType, 63 BPositionIO* target, int32 baseType); 64 65 virtual BView* NewConfigView(TranslatorSettings* settings); 66 67protected: 68 virtual ~AVIFTranslator(); 69 // this is protected because the object is deleted by the 70 // Release() function instead of being deleted directly by 71 // the user 72 73private: 74 status_t _TranslateFromBits(BPositionIO* stream, 75 BMessage* settings, uint32 outType, 76 BPositionIO* target); 77 78 status_t _TranslateFromAVIF(BPositionIO* stream, 79 BMessage* settings, uint32 outType, 80 BPositionIO* target); 81}; 82 83 84#endif // #ifndef AVIF_TRANSLATOR_H 85