Example #1
0
bool GstVideoCodec::start() {
  hide();
  if (0 == quid_->pmanage<MPtr(&PContainer::get<Selection<>::index_t>)>(codec_id_)) return true;
  shmsink_sub_ = std::make_unique<GstShmdataSubscriber>(
      shm_encoded_.get_raw(),
      [this](const std::string& caps) {
        this->quid_->graft_tree(
            ".shmdata.writer." + shm_encoded_path_,
            ShmdataUtils::make_tree(caps, ShmdataUtils::get_category(caps), ShmdataStat()));
      },
      ShmdataStat::make_tree_updater(quid_, ".shmdata.writer." + shm_encoded_path_));
  shmsrc_sub_ = std::make_unique<GstShmdataSubscriber>(
      shmsrc_.get_raw(),
      [this](const std::string& caps) {
        this->quid_->graft_tree(
            ".shmdata.reader." + shmpath_to_encode_,
            ShmdataUtils::make_tree(caps, ShmdataUtils::get_category(caps), ShmdataStat()));
      },
      ShmdataStat::make_tree_updater(quid_, ".shmdata.reader." + shmpath_to_encode_));
  make_bin();

  g_object_set(G_OBJECT(gst_pipeline_->get_pipeline()), "async-handling", TRUE, nullptr);
  if (copy_buffers_) g_object_set(G_OBJECT(shmsrc_.get_raw()), "copy-buffers", TRUE, nullptr);
  gst_pipeline_->play(true);
  return true;
}
Example #2
0
int main(int argc, char ** argv)
{
    try
    {
        assert(argc >= 3);
        bool Bug = ( (argc == 4) && !strcmp(argv[3],"txt") );
        std::ifstream in(argv[1]);
        std::ofstream out;
        if (!Bug)
            out.open(argv[2], std::ios::binary);
        else
            out.open(argv[2]);

        if (!init_dicts())
            return 1;

        int i = 0;
        FILE * fp = fopen(argv[1],"r");
        if (!fp)
        {
            fprintf (stderr, "Cannot open file %s", argv[1]);
            return 0;
        };
        int LineNo = 0;
        char buffer[10000];
        while(fgets(buffer, 10000, fp))
        {
            LineNo++;
            StringTokenizer tok(buffer, "\r\n\t ");
            std::string r  = tok.next_token();
            std::string rc = tok.next_token();
            std::string e = tok.next_token();
            std::string ec = tok.next_token();
            UINT d[5];
            if (sscanf(tok.get_rest(),"%i %i %i %i %i", &d[0], &d[1], &d[2], &d[3], &d[4]) != 5)
            {
                fprintf (stderr," Bad format at line %s (line no = %i)\n", buffer, LineNo);
                return 0;
            };

            if ( Bug)
            {
                std::string save_ec = ec;
                get_english_ancode(e,ec);
                out << r <<" "<< rc << " "<< e << " "<<  ec;
                out << " "<< d[0] <<" "<< d[1] <<" "<< d[2] <<" "<< d[3] <<" " <<d[4];
                out << std::endl;
                if (save_ec !=  ec)
                    std::cerr<<e<<std::endl;
            }
            else
                make_bin(r, rc, e, ec, d, out);
            if(i%1000==0)  std::cerr << i << '\r';
            i++;
        }
        fclose (fp);
        out.close();

        return 0;
    }
    catch (CExpc e)
    {
        fprintf (stderr, "exception occurred: %s!\n", e.m_strCause.c_str());
        return 1;
    }
    catch (...)
    {
        fprintf (stderr, "some exception occurred!\n");
        return 1;
    }
}
Example #3
0
void main()
{
  make_bin();

  DWORD ade32_flagtable[512];
  ade32_init(ade32_flagtable);

  for(DWORD i=0x401000; ; )
  {
    disasm_struct s = {4,4};

    DWORD c = ade32_disasm((BYTE*)i, &s, ade32_flagtable);
    if (c==0)
    {
      printf("(0) %08X  %02X %02X %02X %02X ...\n", i,*(BYTE*)(i+0),*(BYTE*)(i+1),*(BYTE*)(i+2),*(BYTE*)(i+3));
      break;
    }

    assert(c==s.disasm_len);

    printf("(%i) %08X ",c,i);
    for(DWORD j=0; j<c; j++) printf(" %02X",*(BYTE*)(i+j));

    for(DWORD j=c; j<8; j++) printf("   ");
    printf("[");
    if (s.disasm_flag&C_BAD)     printf(" ***C_BAD***");
    if (s.disasm_flag&C_SEG)     printf(" C_SEG");
    if (s.disasm_flag&C_LOCK)    printf(" C_LOCK");
    if (s.disasm_flag&C_REP)     printf(" C_REP");
    if (s.disasm_flag&C_67)      printf(" C_67");
    if (s.disasm_flag&C_66)      printf(" C_66");
    if (s.disasm_flag&C_OPCODE2) printf(" C_OPCODE2");
    if (s.disasm_flag&C_MODRM)   printf(" C_MODRM");
    if (s.disasm_flag&C_SIB)     printf(" C_SIB");
    if (s.disasm_flag&C_ADDR1)   printf(" C_ADDR1");
    if (s.disasm_flag&C_ADDR2)   printf(" C_ADDR2");
    if (s.disasm_flag&C_ADDR4)   printf(" C_ADDR4");
    if (s.disasm_flag&C_ADDR67)  printf(" C_ADDR67");
    if (s.disasm_flag&C_DATA1)   printf(" C_DATA1");
    if (s.disasm_flag&C_DATA2)   printf(" C_DATA2");
    if (s.disasm_flag&C_DATA4)   printf(" C_DATA4");
    if (s.disasm_flag&C_DATA66)  printf(" C_DATA66");
    if (s.disasm_flag&C_REL)     printf(" C_REL");
    if (s.disasm_flag&C_STOP)    printf(" C_STOP");
    printf(" ]\n");

    BYTE f**k[64]={0};
    DWORD f = ade32_asm(f**k, &s);

    if ( (f!=c)||( memcmp(f**k,(BYTE*)i,c)!=0 ) )
    {
      printf("(%i) %08X ",f,i);
      for(DWORD j=0; j<f; j++) printf(" %02X",f**k[j]);
      printf("  ; f**k[]\n");
      printf("flag=%08X\n", s.disasm_flag);
      exit(0);
    }

    i += c;
  }

}//main