카메라에 대해 공부중인데 해답을 찾지 못해 질문 드려요.

프리뷰 화면이 의도한 대로 나오지 않고 좌측으로 90도 돌려진 상태로 나옵니다.
화면도 세로 방향이 늘어져서 길게 나와요. 폰을 눕힐 경우 화면이 깨지거나 아예 작동을 하지 않습니다.

인테넷에 있는 간단한 예제 소스로 시험 중인데, 어느 소스를 받아도 내용은 비슷하며 같은 결과가 나옵니다.

얕은 지식으로 이것저것 해결을 시도해 보았는데요,

카메라 파라메터에 .SetRotation(90); 을 시켜 보았는데 화면의 방향은 정상이 되지만 가로줄이 생기면서 깨지고요.

액티비티의 screen orientation을 landscape로 설정하여 해결한 소스를 보았는데 의도치 않게 SurfaceView뿐만 아니라 액티비티 전체가 돌아가며 여전히 화면의 늘어짐 문제는 해결되지 않았습니다.

오버라이드된 surfaceChanged 함수의 width, height인자의 넘어온 값을 찍어보면 화면 해상도와는 딴판의 값이 넘어옵니다(더 작은, 원래 이런지는 잘 모르겠습니다).

갤럭시S, android 2.1로 시험 중이며, 다른 글을 검색해 보니 이러한 현상에 관한 글이 거의 없으며 디자이어에서 이런 현상에 대한 글이 있었습니다. 제가 잘못하는건지 일부에서만 이런 현상이 있는건지 감이 잘 안잡히네요.


로그를 보면 실행 초기의 에러 메세지는 아래와 같이 나오는데 이상이 있는건지 무시할만한 것인지 잘 모르겠습니다.
07-04 12:23:45.511: ERROR/SecCamera(2163): SetRotate(angle(0))
07-04 12:23:45.511: ERROR/SecCamera(2163): setRecordingSize(width(320), height(508))
07-04 12:23:45.511: ERROR/SecCamera(2163): stopPreview()
07-04 12:23:45.511: ERROR/SecCamera(2163): stopPreview: m_flag_camera_start is zero
07-04 12:23:45.511: ERROR/SecCamera(2163): startPreview()m_preview_width: 320 m_preview_height: 508 m_angle: 0
07-04 12:23:46.586: ERROR/SecCamera(2163): get_firmware_data: FW Version: 5.15, PRM Version: 7.55
07-04 12:23:46.586: ERROR/SecCamera(2163): SecCamera::get_firmware_data RELEASED Year : 2010
07-04 12:23:46.586: ERROR/SecCamera(2163): SecCamera::get_firmware_data RELEASED Month: 5
07-04 12:23:46.586: ERROR/SecCamera(2163): SecCamera::get_firmware_data RELEASED Date : 27
07-04 12:23:46.586: ERROR/SecCamera(2163): SecCamera::get_firmware_data Year : 2010
07-04 12:23:46.586: ERROR/SecCamera(2163): SecCamera::get_firmware_data Month: 5
07-04 12:23:46.586: ERROR/SecCamera(2163): SecCamera::get_firmware_data Date : 27
07-04 12:23:46.636: ERROR/SecCamera(2163): startPreview: get the first frame of the preview
07-04 12:23:46.636: ERROR/CameraHardwareSec(2163): startPreview : return startPreview 0
07-04 12:23:46.636: ERROR/CameraHardwareSec(2163): CameraHardwareSec: mPostViewWidth = 640 mPostViewHeight = 480 mPostViewSize = 614400
07-04 12:23:46.636: ERROR/CameraHardwareSec(2163): CameraHardwareSec: mRawHeap : MemoryHeapBase(previewHeapSize(614408))
07-04 12:23:46.656: ERROR/Camera(3656): Error 0


폰을 눕힐시 아예 작동을 하지 않으며 아래의 에러 메세지가 무한 반복됩니다.
07-04 12:23:45.101: ERROR/copybit(2230): Error in VIDIOC_STREAMON
07-04 12:23:45.101: ERROR/copybit(2230): Fail : v4l2_stream_on()
07-04 12:23:45.106: ERROR/copybit(2230): stretch_copybit::sec_stretch fail : ret=-5


혹시나 하는 생각에 소스 첨부할께요. 간단한 예제소스 같지만... 조언 부탁드려요.
public class CameraTest extends Activity implements SurfaceHolder.Callback {
 Camera mCamera;
 /** Called when the activity is first created. */
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  setContentView(R.layout.main);
  SurfaceView sv = (SurfaceView)findViewById(R.id.test);
  SurfaceHolder sh = sv.getHolder();
  sh.addCallback(this);
  sh.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
 }

 @Override
 public void surfaceChanged(SurfaceHolder holder, int format, int width,
   int height) {
  // TODO Auto-generated method stub
  Camera.Parameters parameters = mCamera.getParameters();
  parameters.setPreviewSize(width, height);
  mCamera.setParameters(parameters);
  mCamera.startPreview();
 }

 @Override
 public void surfaceCreated(SurfaceHolder holder) {
  // TODO Auto-generated method stub
  mCamera = Camera.open();
  try {
   mCamera.setPreviewDisplay(holder);
  } catch (IOException exception) {
   mCamera.release();
   mCamera = null;
   // TODO: add more exception handling logic here
  }
 }

 @Override
 public void surfaceDestroyed(SurfaceHolder holder) {
  // TODO Auto-generated method stub
  mCamera.stopPreview();
  mCamera.release();
  mCamera = null;
 }
}