2017-01-10 4 views
1

원시 YUV 이미지 (1280 x 720)의 루마 값을 그래프로 표시하는 작업을하고 있습니다. 즉, Y 데이터를 분리하여 그래프 형태로 표시합니다. 여기서 x 축은 너비이고 y 축은 Y 값입니다.안드로이드 - 안드로이드 플롯을 사용하여 벌크 포인트를 렌더링 할 때 문제가 발생했습니다.

// 코드 나 그래프를 플롯 AndroidPlot을 사용하고

  int count = 0; 
      int byteValue = 0; 
      for (y = 0; y < height; y++) { 
       for (x = 0; x < width; x++) { 
        byteValue = pPictureIn[count++] & 0xff; 
         series.addLast(x, byteValue); 
       } 
      } 

      final PlotStatistics stats = new PlotStatistics(10, false); 

      plot.addListener(stats); 

      redrawer = new Redrawer(Arrays.asList(new Plot[]{plot}), 
      1, false); 

      format = new LineAndPointFormatter(this, R.xml.formatter); 

      plot.addSeries(series, format); 
      redrawer.start(); 

. 그리고 시리즈의 모든 포인트를 추가하고 있습니다. 여기에 내 문제는, 포인트를 렌더링하려고하면 내 응용 프로그램이 얼어 붙습니다. 렌더링 모드를 USE_BACKGROUND_THREAD로 사용하고 있습니다.

누군가 동결없이 한 번에 점수를 렌더링하는 데 도움을주십시오. 미리 감사드립니다.

+1

이미지의 모든 픽셀을 어떤 스레드로 이동하고 있습니까? –

+0

비동기 작업에서 픽셀을 통과하려고하고 포스트 실행 메서드에서 렌더링하기 시작했습니다. @ Morrison Chang –

+0

만약 내가 덜 포인트 렌더링을 제대로 제공합니다. 그렇지 않으면 앱이 정지되었습니다. @ Morrison Chang –

답변

0

효율성이나 속도에 최적화되어 있지 않은 SimpleXYSeries을 사용하고 있습니다. addLast에 대한 호출은 포인트 수가 증가함에 따라 극도로 비쌉니다. 고정 메모리 사용 XYSeries 구현은 훨씬 더 나은 성능을 제공합니다. 이미지 데이터가 동적 인 경우 (카메라 또는 다른 이미지 스트림에서 가져온 것) 링 버퍼가 고려해야 할 좋은 디자인 일 수 있습니다 ... 특히 FixedSizeEditableXYSeries을 살펴 보시기 바랍니다.

또한 데이터를 샘플링하여 SampledXYSeries을 사용하여 크기를 줄일 수도 있습니다.

Advanced XY Series Types doc에는 위에서 언급 한 클래스와 몇 가지 다른 장단점에 대한 자세한 내용이 있습니다.

+0

나는이 문제에 대한 OpenGL 렌더링을 선호했으며 끝났습니다. 하지만 여전히, 다른 목적을 위해 XYSeries를 사용하고 있기 때문에 살펴볼 것입니다. nick @ Nick에게 감사드립니다. –