از 27 مارس 2025، توصیه می کنیم از android-latest-release به جای aosp-main برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
دستگاههای دارای Android 10 از فرمت تصویر فشردهشده HEIC پشتیبانی میکنند، یک نام تجاری خاص رمزگذاری ویدیویی با کارایی بالا (HEVC) از فرمت فایل تصویری با کارایی بالا (HEIF) همانطور که در ISO/IEC 23008-12 مشخص شده است. تصاویر کدگذاری شده با HEIC کیفیت تصویر بهتری را با اندازه فایل های کوچکتر در مقایسه با فایل های JPEG ارائه می دهند.
تصاویر HEIC توسط چارچوب دوربین ایجاد می شود که یک تصویر فشرده نشده از دوربین HAL درخواست می کند و آن را به زیر سیستم رسانه ارسال می کند تا توسط یک رمزگذار HEIC یا HEVC کدگذاری شود.
برای پشتیبانی از فرمت تصویر HEIC در دستگاه خود، یک کدک HEIC/HEVC را پیاده سازی کنید و از پیکربندی های جریان مورد نیاز پشتیبانی کنید، که عبارتند از جریان های IMPLEMENTATION_DEFINED / YUV و جریان های بخش برنامه JPEG.
رسانه ها
کدک HEIC/HEVC را در حالت کیفیت ثابت (CQ) برای سخت افزار مربوطه به شرح زیر پیاده سازی کنید:
کدک نوع HEVC بسته به اندازه تصویر یا فرمت IMPLEMENTATION_DEFINED با استفاده از GRALLOC_USAGE_HW_VIDEO_ENCODER یا قالب HAL_PIXEL_FORMAT_YCBCR_420_888 را مصرف می کند.
کدک نوع HEIC فرمت IMPLEMENTATION_DEFINED را با استفاده از GRALLOC_USAGE_HW_IMAGE_ENCODER مصرف می کند.
دوربین
در فراداده ثابت، ANDROID_HEIC_INFO_SUPPORTED را روی true، و ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT را روی مقداری بین [1, 16] تنظیم کنید که تعداد بخشهای برنامه JPEG را نشان میدهد.
برای هر ترکیب جریان اجباری، دستگاه دوربین شما باید از تعویض یک جریان JPEG با یک جریان HEIC با همان اندازه پشتیبانی کند.
برای یک جریان خروجی HEIC در API عمومی، سرویس دوربین دو جریان داخلی HAL ایجاد می کند:
یک جریان BLOB با پرچم استفاده JPEG_APPS_SEGMENT برای ذخیره بخشهای برنامه از جمله EXIF و بخشهای تصویر کوچک
یک جریان IMPLEMENTATION_DEFINED یا YCBCR_420_888 به اندازه جریان HEIC بسته به کدک هدف و اندازه جریان HEIC
بر اساس ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT ، چارچوب دوربین بافرهایی را به اندازه کافی بزرگ اختصاص می دهد که HAL دوربین بتواند بخش های برنامه JPEG را پر کند. بخش APP1 مورد نیاز است اما بخش های بعدی از بخش APP1 ( APP2 و بالاتر) اختیاری هستند. چارچوب دوربین، برچسبهای EXIF در بخش APP1 را که میتوانند از فرادادههای نتیجه ضبط یا مربوط به جریان بیت تصویر اصلی باشند، لغو میکند و آنها را به MediaMuxer ارسال میکند.
از آنجا که رمزگذار رسانه جهت گیری را در فراداده تصاویر خروجی تعبیه می کند، برای اطمینان از جهت گیری ثابت بین تصویر اصلی و تصویر کوچک، دوربین HAL نباید تصویر بند انگشتی را بر اساس android.jpeg.orientation. چارچوب جهتگیری را در فراداده EXIF و ظرف HEIC مینویسد.
تگ های فراداده ایستا، کنترلی و پویا مربوط به فرمت JPEG در قالب HEIC نیز اعمال می شود. به عنوان مثال، تگ های android.jpeg.orientation و android.jpeg.quality متادیتا در درخواست ضبط برای کنترل جهت گیری و کیفیت تصاویر HEIC استفاده می شود.
برای استفاده از قالب HEIC در یک برنامه، از API عمومی HEIC استفاده کنید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# HEIF imaging\n\nDevices running Android 10 support the HEIC\ncompressed image format, a high\nefficiency video encoding (HEVC) specific *brand* of the high efficiency image\nfile format (HEIF) as specified in\n[ISO/IEC 23008-12](https://www.iso.org/standard/66067.html).\nHEIC-encoded images offer\nbetter image quality with smaller file sizes as compared to JPEG files.\n\nHEIC images are generated by the camera framework requesting an uncompressed\nimage from the\n[camera HAL](/docs/core/camera/camera3) and sending it to the media subsystem to\nbe encoded by an HEIC or HEVC encoder.\n\nRequirements\n------------\n\nTo support the HEIC image format, your device must have a hardware encoder\nsupporting\n[`MIMETYPE_IMAGE_ANDROID_HEIC`](https://developer.android.com/reference/android/media/MediaFormat.html#MIMETYPE_IMAGE_ANDROID_HEIC)\nor\n[`MIMETYPE_VIDEO_HEVC`](https://developer.android.com/reference/android/media/MediaFormat.html#MIMETYPE_VIDEO_HEVC)\nwith the\n[constant quality mode](https://developer.android.com/reference/android/media/MediaCodecInfo.EncoderCapabilities.html#BITRATE_MODE_CQ).\n\nImplementation\n--------------\n\nTo support the HEIC image format on your device, implement an HEIC/HEVC codec\nand provide support for the required stream configurations, which are the\n`IMPLEMENTATION_DEFINED`/`YUV` streams and JPEG app segment streams.\n\n### Media\n\nImplement the HEIC/HEVC codec in constant quality (CQ) mode for the\ncorresponding hardware as follows:\n\n- The HEVC type codec consumes either the `IMPLEMENTATION_DEFINED` format with the `GRALLOC_USAGE_HW_VIDEO_ENCODER` usage or the `HAL_PIXEL_FORMAT_YCBCR_420_888` format depending on the image size.\n- The HEIC type codec consumes the `IMPLEMENTATION_DEFINED` format with the `GRALLOC_USAGE_HW_IMAGE_ENCODER` usage.\n\n### Camera\n\nIn the static metadata, set `ANDROID_HEIC_INFO_SUPPORTED` to true, and\n`ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT` to a value between `[1, 16]`,\nindicating the number of JPEG app segments.\n\nFor each mandatory stream combination, your camera device must support swapping\na JPEG stream with a HEIC stream of the same size.\n\nFor an HEIC output stream at the public API, the camera service creates two HAL\ninternal streams:\n\n- A BLOB stream with the `JPEG_APPS_SEGMENT` usage flag to store app segments including EXIF and thumbnail segments\n- An `IMPLEMENTATION_DEFINED` or `YCBCR_420_888` stream the size of the HEIC stream depending on the target codec and HEIC stream size\n\nBased on `ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT`, the camera framework\nallocates buffers large enough for the camera HAL to populate the JPEG app\nsegments. The `APP1` segment is required but segments following the `APP1`\nsegment (`APP2` and above) are optional. The camera framework overrides the EXIF\ntags in the `APP1` segment that can be derived from the capture result metadata\nor are related to the main image bitstream and sends them to `MediaMuxer`.\n\nBecause the media encoder embeds the orientation in the metadata of output\nimages, to ensure a consistent orientation between the main image and thumbnail,\nthe camera HAL must not rotate the thumbnail image based on\n`android.jpeg.orientation.` The framework writes the orientation into the EXIF\nmetadata and HEIC container.\n\nThe static, control, and dynamic metadata tags related to the JPEG format also\napply to the HEIC format. For example, the `android.jpeg.orientation` and\n`android.jpeg.quality` metadata tags in the capture request are used to control\nthe orientation and quality of HEIC images.\n| **Note:** JPEG and HEIC streams can't be configured at the same time.\n\nTo use the HEIC format in an app, use the\n[HEIC public API](https://developer.android.com/reference/android/graphics/ImageFormat#HEIC).\n\nFor more information, see the following sources.\n\n**Camera HAL**\n\n- [`docs.html`](https://android.googlesource.com/platform/system/media/+/a44fd450eae51e671b1020d4f2fb146b181bc1f7/camera/docs/docs.html#31733)\n- [`CameraBlob`](https://android.googlesource.com/platform/hardware/interfaces/+/55386823a318309bfe1cc40175afa615225cabb1/camera/device/3.5/types.hal#156)\n- [`ANDROID_HEIC_INFO_SUPPORTED`](https://android.googlesource.com/platform/hardware/interfaces/+/55386823a318309bfe1cc40175afa615225cabb1/camera/metadata/3.4/types.hal#166)\n- [`ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT`](https://android.googlesource.com/platform/hardware/interfaces/+/55386823a318309bfe1cc40175afa615225cabb1/camera/metadata/3.4/types.hal#172)\n\n**Graphic buffer data space**\n\n- [`JPEG_APP_SEGMENTS`](https://android.googlesource.com/platform/hardware/interfaces/+/55386823a318309bfe1cc40175afa615225cabb1/graphics/common/1.2/types.hal#66)\n- [`HEIF`](https://android.googlesource.com/platform/hardware/interfaces/+/55386823a318309bfe1cc40175afa615225cabb1/graphics/common/1.2/types.hal#77)\n\n**Graphic buffer usage space**\n\n- [`HW_IMAGE_ENCODER`](https://android.googlesource.com/platform/hardware/interfaces/+/55386823a318309bfe1cc40175afa615225cabb1/graphics/common/1.2/types.hal#105)\n\nValidation\n----------\n\nTo validate that your implementation supports HEIC images, use the\n[`TestingCamera2`](https://android.googlesource.com/platform/pdk/+/refs/heads/android16-release/apps/TestingCamera2/)\ntest app and run the following camera CTS and VTS tests.\n\n**Camera CTS tests**\n\n- [`NativeImageReaderTest#testHeic`](https://android.googlesource.com/platform/cts/+/refs/heads/android16-release/tests/camera/src/android/hardware/camera2/cts/NativeImageReaderTest.java#46)\n- [`ImageReaderTest#testHeic`](https://android.googlesource.com/platform/cts/+/refs/heads/android16-release/tests/camera/src/android/hardware/camera2/cts/ImageReaderTest.java#207)\n- [`ImageReaderTest#testRepeatingHeic`](https://android.googlesource.com/platform/cts/+/refs/heads/android16-release/tests/camera/src/android/hardware/camera2/cts/ImageReaderTest.java#257)\n- [`ReprocessCaptureTest#testBasicYuvToHeicReprocessing`](https://android.googlesource.com/platform/cts/+/refs/heads/android16-release/tests/camera/src/android/hardware/camera2/cts/ReprocessCaptureTest.java#122)\n- [`ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing`](https://android.googlesource.com/platform/cts/+/refs/heads/android16-release/tests/camera/src/android/hardware/camera2/cts/ReprocessCaptureTest.java#170)\n- [`RobustnessTest#testMandatoryOutputCombinations`](https://android.googlesource.com/platform/cts/+/refs/heads/android16-release/tests/camera/src/android/hardware/camera2/cts/RobustnessTest.java#230)\n- [`StillCaptureTest#testHeicExif`](https://android.googlesource.com/platform/cts/+/refs/heads/android16-release/tests/camera/src/android/hardware/camera2/cts/StillCaptureTest.java#116)\n\n**Camera VTS tests**\n\n- [`VtsHalCameraProviderV2_4TargetTest.cpp`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp#2357)"]]