Home | History | Annotate | Download | only in dvr
      1 #include "aidl/android/dvr/parcelable_composer_frame.h"
      2 
      3 #include <binder/Parcel.h>
      4 
      5 #include "aidl/android/dvr/parcelable_composer_layer.h"
      6 
      7 namespace android {
      8 namespace dvr {
      9 
     10 ParcelableComposerFrame::ParcelableComposerFrame() {}
     11 
     12 ParcelableComposerFrame::ParcelableComposerFrame(
     13     const ComposerView::Frame& frame)
     14     : frame_(frame) {}
     15 
     16 ParcelableComposerFrame::~ParcelableComposerFrame() {}
     17 
     18 status_t ParcelableComposerFrame::writeToParcel(Parcel* parcel) const {
     19   status_t ret = parcel->writeUint64(frame_.display_id);
     20   if (ret != OK) return ret;
     21 
     22   ret = parcel->writeInt32(frame_.display_width);
     23   if (ret != OK) return ret;
     24 
     25   ret = parcel->writeInt32(frame_.display_height);
     26   if (ret != OK) return ret;
     27 
     28   ret = parcel->writeBool(frame_.removed);
     29   if (ret != OK) return ret;
     30 
     31   ret = parcel->writeUint32(static_cast<uint32_t>(frame_.active_config));
     32   if (ret != OK) return ret;
     33 
     34   ret = parcel->writeUint32(static_cast<uint32_t>(frame_.color_mode));
     35   if (ret != OK) return ret;
     36 
     37   ret = parcel->writeUint32(static_cast<uint32_t>(frame_.power_mode));
     38   if (ret != OK) return ret;
     39 
     40   ret = parcel->writeUint32(static_cast<uint32_t>(frame_.vsync_enabled));
     41   if (ret != OK) return ret;
     42 
     43   ret = parcel->writeInt32(frame_.color_transform_hint);
     44   if (ret != OK) return ret;
     45 
     46   for(size_t i = 0; i < 16; i++) {
     47     ret = parcel->writeFloat(frame_.color_transform[i]);
     48     if (ret != OK) return ret;
     49   }
     50 
     51   std::vector<ParcelableComposerLayer> layers;
     52   for (size_t i = 0; i < frame_.layers.size(); ++i)
     53     layers.push_back(ParcelableComposerLayer(frame_.layers[i]));
     54 
     55   ret = parcel->writeParcelableVector(layers);
     56 
     57   return ret;
     58 }
     59 
     60 status_t ParcelableComposerFrame::readFromParcel(const Parcel* parcel) {
     61   status_t ret = parcel->readUint64(&frame_.display_id);
     62   if (ret != OK) return ret;
     63 
     64   ret = parcel->readInt32(&frame_.display_width);
     65   if (ret != OK) return ret;
     66 
     67   ret = parcel->readInt32(&frame_.display_height);
     68   if (ret != OK) return ret;
     69 
     70   ret = parcel->readBool(&frame_.removed);
     71   if (ret != OK) return ret;
     72 
     73   uint32_t value;
     74   ret = parcel->readUint32(&value);
     75   if (ret != OK) return ret;
     76   frame_.active_config = static_cast<Config>(value);
     77 
     78   ret = parcel->readUint32(&value);
     79   if (ret != OK) return ret;
     80   frame_.color_mode = static_cast<ColorMode>(value);
     81 
     82   ret = parcel->readUint32(&value);
     83   if (ret != OK) return ret;
     84   frame_.power_mode = static_cast<IComposerClient::PowerMode>(value);
     85 
     86   ret = parcel->readUint32(&value);
     87   if (ret != OK) return ret;
     88   frame_.vsync_enabled = static_cast<IComposerClient::Vsync>(value);
     89 
     90   ret = parcel->readInt32(&frame_.color_transform_hint);
     91   if (ret != OK) return ret;
     92 
     93   for(size_t i = 0; i < 16; i++) {
     94     ret = parcel->readFloat(&frame_.color_transform[i]);
     95     if (ret != OK) return ret;
     96   }
     97 
     98   std::vector<ParcelableComposerLayer> layers;
     99   ret = parcel->readParcelableVector(&layers);
    100   if (ret != OK) return ret;
    101 
    102   frame_.layers.clear();
    103   for (size_t i = 0; i < layers.size(); ++i)
    104     frame_.layers.push_back(layers[i].layer());
    105 
    106   return ret;
    107 }
    108 
    109 }  // namespace dvr
    110 }  // namespace android
    111